Merge "Automated intrinsics calibration"
diff --git a/.gitignore b/.gitignore
index 82b963a..8c6aa64 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,10 @@
/bazel-*
/compile_commands.json
+# The `tools/build_rules/apache_runner.py` helper looks for this file by
+# default. We don't want folks to check it in.
+/ldap.json
+
# Hide vagrant's files that unfortunately make it into the source tree when you
# run "vagrant up".
/vm/.vagrant/
diff --git a/WORKSPACE b/WORKSPACE
index 52af239..65395cb 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -7,6 +7,10 @@
python_debs = "files",
)
load(
+ "//debian:apache2.bzl",
+ apache2_debs = "files",
+)
+load(
"//debian:patch.bzl",
patch_debs = "files",
)
@@ -82,6 +86,8 @@
generate_repositories_for_debs(ssh_debs)
+generate_repositories_for_debs(apache2_debs)
+
generate_repositories_for_debs(patch_debs)
generate_repositories_for_debs(pandoc_debs)
@@ -155,13 +161,20 @@
"-Wformat=2",
"-Werror",
"-ggdb3",
- "-DAOS_DEBUG=0",
]
llvm_cxxopts = [
"-std=gnu++17",
]
+llvm_opt_copts = [
+ "-DAOS_DEBUG=0",
+]
+
+llvm_fastbuild_copts = [
+ "-DAOS_DEBUG=0",
+]
+
llvm_dbg_copts = [
"-DAOS_DEBUG=1",
]
@@ -187,9 +200,17 @@
},
dbg_copts = {
"linux-x86_64": llvm_dbg_copts,
- "linux-armv7": llvm_cxxopts,
+ "linux-armv7": llvm_dbg_copts,
+ },
+ fastbuild_copts = {
+ "linux-x86_64": llvm_fastbuild_copts,
+ "linux-armv7": llvm_fastbuild_copts,
},
llvm_version = llvm_version,
+ opt_copts = {
+ "linux-x86_64": llvm_opt_copts,
+ "linux-armv7": llvm_opt_copts,
+ },
standard_libraries = {
"linux-x86_64": "libstdc++-10",
"linux-armv7": "libstdc++-10",
@@ -220,6 +241,8 @@
#"//tools/cpp:cc-toolchain-cortex-m4f-k22",
"//tools/python:python_toolchain",
"//tools/go:noop_go_toolchain",
+ "//tools/rust:rust-toolchain-roborio",
+ "//tools/rust:noop_rust_toolchain",
)
load("//tools/ci:repo_defs.bzl", "ci_configure")
@@ -490,6 +513,13 @@
)
http_archive(
+ name = "apache2",
+ build_file = "@//debian:apache2.BUILD",
+ sha256 = "98b0ad6d911751ba0aa486429e6278f995e7bbabd928c7d3d44c888fa2bf371b",
+ url = "https://www.frc971.org/Build-Dependencies/apache2.tar.gz",
+)
+
+http_archive(
name = "pandoc",
build_file = "@//debian:pandoc.BUILD",
sha256 = "9f7a7adb3974a1f14715054c349ff3edc2909e920dbe3438fca437a83845f3c4",
@@ -752,11 +782,41 @@
# I'm sure there is a better path, but that works...
yarn_install(
name = "npm",
+ frozen_lockfile = True,
package_json = "//:package.json",
symlink_node_modules = False,
yarn_lock = "//:yarn.lock",
)
+http_archive(
+ name = "io_bazel_rules_webtesting",
+ sha256 = "e9abb7658b6a129740c0b3ef6f5a2370864e102a5ba5ffca2cea565829ed825a",
+ urls = ["https://github.com/bazelbuild/rules_webtesting/releases/download/0.3.5/rules_webtesting.tar.gz"],
+)
+
+http_archive(
+ name = "rules_rust",
+ sha256 = "531bdd470728b61ce41cf7604dc4f9a115983e455d46ac1d0c1632f613ab9fc3",
+ strip_prefix = "rules_rust-d8238877c0e552639d3e057aadd6bfcf37592408",
+ urls = [
+ # `main` branch as of 2021-08-23
+ "https://github.com/bazelbuild/rules_rust/archive/d8238877c0e552639d3e057aadd6bfcf37592408.tar.gz",
+ ],
+)
+
+load("@rules_rust//rust:repositories.bzl", "rust_repository_set")
+
+rust_repository_set(
+ name = "rust",
+ edition = "2021",
+ exec_triple = "x86_64-unknown-linux-gnu",
+ extra_target_triples = [
+ "arm-unknown-linux-gnueabi",
+ "armv7-unknown-linux-gnueabihf",
+ ],
+ version = "1.56.1",
+)
+
# Flatbuffers
local_repository(
name = "com_github_google_flatbuffers",
diff --git a/aos/events/logging/log_namer.cc b/aos/events/logging/log_namer.cc
index 9a5d038..b41212c 100644
--- a/aos/events/logging/log_namer.cc
+++ b/aos/events/logging/log_namer.cc
@@ -46,11 +46,33 @@
}
}
-void NewDataWriter::Reboot() {
+void NewDataWriter::Reboot(const UUID &source_node_boot_uuid) {
parts_uuid_ = UUID::Random();
++parts_index_;
reopen_(this);
header_written_ = false;
+ for (State &state : state_) {
+ state.boot_uuid = UUID::Zero();
+ state.oldest_remote_monotonic_timestamp = monotonic_clock::max_time;
+ state.oldest_local_monotonic_timestamp = monotonic_clock::max_time;
+ state.oldest_remote_unreliable_monotonic_timestamp =
+ monotonic_clock::max_time;
+ state.oldest_local_unreliable_monotonic_timestamp =
+ monotonic_clock::max_time;
+ }
+
+ state_[node_index_].boot_uuid = source_node_boot_uuid;
+
+ VLOG(1) << "Rebooted " << filename();
+}
+
+void NewDataWriter::UpdateBoot(const UUID &source_node_boot_uuid) {
+ if (state_[node_index_].boot_uuid != source_node_boot_uuid) {
+ state_[node_index_].boot_uuid = source_node_boot_uuid;
+ if (header_written_) {
+ Reboot(source_node_boot_uuid);
+ }
+ }
}
void NewDataWriter::UpdateRemote(
@@ -77,7 +99,6 @@
rotate = true;
}
-
// Did the unreliable timestamps change?
if (!reliable) {
if (state.oldest_remote_unreliable_monotonic_timestamp >
@@ -113,18 +134,15 @@
const UUID &source_node_boot_uuid,
aos::monotonic_clock::time_point now) {
// Trigger a reboot if we detect the boot UUID change.
- if (state_[node_index_].boot_uuid != source_node_boot_uuid) {
- state_[node_index_].boot_uuid = source_node_boot_uuid;
- if (header_written_) {
- Reboot();
- }
+ UpdateBoot(source_node_boot_uuid);
+ if (!header_written_) {
QueueHeader(MakeHeader());
}
// If the start time has changed for this node, trigger a rotation.
if (log_namer_->monotonic_start_time(node_index_, source_node_boot_uuid) !=
- monotonic_start_time_) {
+ monotonic_start_time_) {
CHECK(header_written_);
Rotate();
}
diff --git a/aos/events/logging/log_namer.h b/aos/events/logging/log_namer.h
index 00e1856..c3fc5d4 100644
--- a/aos/events/logging/log_namer.h
+++ b/aos/events/logging/log_namer.h
@@ -59,6 +59,11 @@
const UUID &node_boot_uuid,
aos::monotonic_clock::time_point now);
+ // Updates the current boot for the source node. This is useful when you want
+ // to queue a message that may trigger a reboot rotation, but then need to
+ // update the remote timestamps.
+ void UpdateBoot(const UUID &source_node_boot_uuid);
+
// Returns the filename of the writer.
std::string_view filename() const {
return writer ? writer->filename() : "(closed)";
@@ -97,7 +102,7 @@
private:
// Signals that a node has rebooted.
- void Reboot();
+ void Reboot(const UUID &source_node_boot_uuid);
void QueueHeader(
aos::SizePrefixedFlatbufferDetachedBuffer<LogFileHeader> &&header);
diff --git a/aos/events/logging/log_writer.cc b/aos/events/logging/log_writer.cc
index f379ca4..8eaeb73 100644
--- a/aos/events/logging/log_writer.cc
+++ b/aos/events/logging/log_writer.cc
@@ -695,6 +695,20 @@
const auto end = event_loop_->monotonic_now();
RecordCreateMessageTime(start, end, &f);
+ // Timestamps tell us information about what happened too!
+ // Capture any reboots so UpdateRemote is properly recorded.
+ f.contents_writer->UpdateBoot(UUID::FromVector(msg->boot_uuid()));
+
+ // Start with recording info about the data flowing from our node to the
+ // remote.
+ f.contents_writer->UpdateRemote(
+ node_index_, event_loop_->boot_uuid(),
+ monotonic_clock::time_point(
+ chrono::nanoseconds(msg->monotonic_remote_time())),
+ monotonic_clock::time_point(
+ chrono::nanoseconds(msg->monotonic_sent_time())),
+ f.reliable_forwarding);
+
f.contents_writer->QueueMessage(
&fbb, UUID::FromVector(msg->boot_uuid()), end);
}
diff --git a/aos/events/logging/logfile_sorting.cc b/aos/events/logging/logfile_sorting.cc
index 7610295..5000ff9 100644
--- a/aos/events/logging/logfile_sorting.cc
+++ b/aos/events/logging/logfile_sorting.cc
@@ -297,7 +297,7 @@
std::set<std::string> config_sha256_list;
// Map from a observed pair of boots to the associated timestamps.
- // logger_node -> logger_node_boot_uuid -> destination_node index ->
+ // source_node -> source_node_boot_uuid -> destination_node index ->
// destination_boot_uuid -> list of all times from all parts.
absl::btree_map<
std::string,
@@ -544,7 +544,7 @@
}
VLOG(1) << "Parts: " << parts_uuid << ", source boot uuid "
- << source_boot_uuid << " " << parts_index;
+ << source_boot_uuid << " index " << parts_index;
auto it = log_it->second.unsorted_parts.find(
std::pair(parts_uuid, std::string(source_boot_uuid)));
if (it == log_it->second.unsorted_parts.end()) {
@@ -569,12 +569,12 @@
// We've got a newer log with boot_uuids, and oldest timestamps. Fill in
// this->boot_times with the info we have found.
if (HasNewTimestamps(&log_header->message())) {
- auto node_boot_times_it = boot_times.find(logger_node);
+ auto node_boot_times_it = boot_times.find(node);
if (node_boot_times_it == boot_times.end()) {
node_boot_times_it =
boot_times
.emplace(
- logger_node,
+ node,
absl::btree_map<
std::string,
absl::btree_map<
@@ -583,14 +583,15 @@
std::vector<BootPairTimes>>>>())
.first;
}
+
auto source_boot_times_it =
- node_boot_times_it->second.find(std::string(logger_boot_uuid));
+ node_boot_times_it->second.find(std::string(source_boot_uuid));
if (source_boot_times_it == node_boot_times_it->second.end()) {
source_boot_times_it =
node_boot_times_it->second
.emplace(
- logger_boot_uuid,
+ source_boot_uuid,
absl::btree_map<
size_t, absl::btree_map<std::string,
std::vector<BootPairTimes>>>())
@@ -616,6 +617,7 @@
.oldest_remote_unreliable_monotonic_timestamps()
->size());
CHECK(!logger_boot_uuid.empty());
+ CHECK(!source_boot_uuid.empty());
for (size_t node_index = 0; node_index < boot_uuids_size; ++node_index) {
const std::string_view boot_uuid =
log_header->message().boot_uuids()->Get(node_index)->string_view();
@@ -638,7 +640,7 @@
log_header->message()
.oldest_remote_unreliable_monotonic_timestamps()
->Get(node_index)));
- if (boot_uuid.empty() || boot_uuid == logger_boot_uuid) {
+ if (boot_uuid.empty() || boot_uuid == source_boot_uuid) {
CHECK_EQ(oldest_local_monotonic_timestamp, monotonic_clock::max_time);
CHECK_EQ(oldest_remote_monotonic_timestamp,
monotonic_clock::max_time);
@@ -775,31 +777,46 @@
<< *config_sha256_list.begin();
const Configuration *config = config_it->second.get();
- for (const auto &node_boot_times : boot_times) {
- const std::string &logger_node_name = node_boot_times.first;
+ // Map from a observed pair of boots to the associated timestamps.
+ // destination_node -> destination_node_boot_uuid -> source_node ->
+ // source_boot_uuid -> list of all times from all parts.
+ //
+ // This is boot_times but flipped inside out so we can order on destinations
+ // instead of sources for when we have the same destination for 2 different
+ // boots.
+ absl::btree_map<
+ std::string,
+ absl::btree_map<
+ std::string,
+ absl::btree_map<std::string,
+ absl::btree_map<std::string, BootPairTimes>>>>
+ reverse_boot_times;
- // We know nothing about the order of the logger node's boot, but we
+ for (const auto &node_boot_times : boot_times) {
+ const std::string &source_node_name = node_boot_times.first;
+
+ // We know nothing about the order of the source node's boot, but we
// know it happened. If there is only 1 single boot, the constraint
// code will happily mark it as boot 0. Otherwise we'll get the
// appropriate boot count if it can be computed or an error.
//
// Add it to the boots list to kick this off.
auto logger_node_boot_constraints_it =
- boot_constraints.find(logger_node_name);
+ boot_constraints.find(source_node_name);
if (logger_node_boot_constraints_it == boot_constraints.end()) {
logger_node_boot_constraints_it =
boot_constraints
- .insert(std::make_pair(logger_node_name, NodeBootState()))
+ .insert(std::make_pair(source_node_name, NodeBootState()))
.first;
}
- for (const auto &source_boot_time : node_boot_times.second) {
- const std::string &logger_boot_uuid = source_boot_time.first;
- logger_node_boot_constraints_it->second.boots.insert(logger_boot_uuid);
+ for (const auto &destination_boot_time : node_boot_times.second) {
+ const std::string &source_boot_uuid = destination_boot_time.first;
+ logger_node_boot_constraints_it->second.boots.insert(source_boot_uuid);
- for (const auto &source_nodes : source_boot_time.second) {
- const std::string source_node_name =
- config->nodes()->Get(source_nodes.first)->name()->str();
+ for (const auto &destination_nodes : destination_boot_time.second) {
+ const std::string destination_node_name =
+ config->nodes()->Get(destination_nodes.first)->name()->str();
// Now, we have a bunch of remote boots for the same local boot and
// remote node. We want to sort them by observed local time. This will
@@ -807,7 +824,7 @@
// node too so we can check for overlapping boots.
std::vector<std::tuple<std::string, BootPairTimes, BootPairTimes>>
source_boot_times;
- for (const auto &boot_time_list : source_nodes.second) {
+ for (const auto &boot_time_list : destination_nodes.second) {
// Track the first boot time we have evidence of.
BootPairTimes boot_time = boot_time_list.second[0];
// And the last one so we can look for overlapping boots.
@@ -817,13 +834,26 @@
if (next_boot_time.oldest_local_unreliable_monotonic_timestamp !=
aos::monotonic_clock::max_time) {
VLOG(1)
- << "Remote time "
+ << "Unreliable remote time "
<< next_boot_time.oldest_remote_unreliable_monotonic_timestamp
- << " " << boot_time_list.first;
+ << " remote " << boot_time_list.first << " local "
+ << source_boot_uuid;
VLOG(1)
- << "Local time "
+ << "Unreliable local time "
<< next_boot_time.oldest_local_unreliable_monotonic_timestamp
- << " " << boot_time_list.first;
+ << " remote " << boot_time_list.first << " local "
+ << source_boot_uuid;
+ }
+ if (next_boot_time.oldest_local_monotonic_timestamp !=
+ aos::monotonic_clock::max_time) {
+ VLOG(1) << "Reliable remote time "
+ << next_boot_time.oldest_remote_monotonic_timestamp
+ << " remote " << boot_time_list.first << " local "
+ << source_boot_uuid;
+ VLOG(1) << "Reliable local time "
+ << next_boot_time.oldest_local_monotonic_timestamp
+ << " remote " << boot_time_list.first << " local "
+ << source_boot_uuid;
}
// If we found an existing entry, update the min to be the min of
// all records. This lets us combine info from multiple part files.
@@ -867,6 +897,57 @@
}
source_boot_times.emplace_back(
std::make_tuple(boot_time_list.first, boot_time, max_boot_time));
+
+ // While we are building up the forwards set of constraints, build up
+ // a list of reverse constraints. This gives us a list of boots for
+ // the case when we have 2 logs from different boots, where the remote
+ // is both the same boot.
+
+ auto reverse_destination_node_it =
+ reverse_boot_times.find(destination_node_name);
+ if (reverse_destination_node_it == reverse_boot_times.end()) {
+ reverse_destination_node_it =
+ reverse_boot_times
+ .emplace(
+ destination_node_name,
+ absl::btree_map<
+ std::string,
+ absl::btree_map<
+ std::string,
+ absl::btree_map<std::string, BootPairTimes>>>())
+ .first;
+ }
+
+ auto reverse_destination_node_boot_uuid_it =
+ reverse_destination_node_it->second.find(boot_time_list.first);
+ if (reverse_destination_node_boot_uuid_it ==
+ reverse_destination_node_it->second.end()) {
+ reverse_destination_node_boot_uuid_it =
+ reverse_destination_node_it->second
+ .emplace(boot_time_list.first,
+ absl::btree_map<
+ std::string,
+ absl::btree_map<std::string, BootPairTimes>>())
+ .first;
+ }
+
+ auto reverse_source_node_it =
+ reverse_destination_node_boot_uuid_it->second.find(
+ source_node_name);
+ if (reverse_source_node_it ==
+ reverse_destination_node_boot_uuid_it->second.end()) {
+ reverse_source_node_it =
+ reverse_destination_node_boot_uuid_it->second
+ .emplace(source_node_name,
+ absl::btree_map<std::string, BootPairTimes>())
+ .first;
+ }
+
+ auto reverse_source_node_boot_uuid_it =
+ reverse_source_node_it->second.find(source_boot_uuid);
+ CHECK(reverse_source_node_boot_uuid_it ==
+ reverse_source_node_it->second.end());
+ reverse_source_node_it->second.emplace(source_boot_uuid, boot_time);
}
std::sort(
source_boot_times.begin(), source_boot_times.end(),
@@ -918,17 +999,17 @@
const std::string &fatal_source_boot_uuid =
std::get<0>(fatal_boot_time);
LOG(ERROR) << "Boot " << fatal_boot_id << ", "
- << fatal_source_boot_uuid << " on " << source_node_name
+ << fatal_source_boot_uuid << " on " << destination_node_name
<< " spans ["
<< std::get<1>(fatal_boot_time)
.oldest_local_unreliable_monotonic_timestamp
<< ", "
<< std::get<2>(fatal_boot_time)
.oldest_local_unreliable_monotonic_timestamp
- << "] on logger " << logger_node_name;
+ << "] on source " << destination_node_name;
}
- LOG(FATAL) << "Found overlapping boots on " << source_node_name
- << " logged on " << logger_node_name << ", "
+ LOG(FATAL) << "Found overlapping boots on " << destination_node_name
+ << " source node " << destination_node_name << ", "
<< std::get<1>(boot_time)
.oldest_local_unreliable_monotonic_timestamp
<< " < " << last_boot_time;
@@ -938,11 +1019,11 @@
.oldest_local_unreliable_monotonic_timestamp;
auto source_node_boot_constraints_it =
- boot_constraints.find(source_node_name);
+ boot_constraints.find(destination_node_name);
if (source_node_boot_constraints_it == boot_constraints.end()) {
source_node_boot_constraints_it =
boot_constraints
- .insert(std::make_pair(source_node_name, NodeBootState()))
+ .insert(std::make_pair(destination_node_name, NodeBootState()))
.first;
}
@@ -995,6 +1076,101 @@
}
}
+ // Now, sort the reverse direction so we can handle when we only get
+ // timestamps and need to make sense of the boots.
+ for (const auto &destination_node : reverse_boot_times) {
+ for (const auto &destination_node_boot_uuid : destination_node.second) {
+ for (const auto &source_node : destination_node_boot_uuid.second) {
+ // Now, we need to take all the boots + times and put them in a list to
+ // sort and derive constraints from.
+
+ std::vector<std::pair<std::string, BootPairTimes>>
+ destination_boot_times;
+ for (const auto &source_boot_uuid : source_node.second) {
+ destination_boot_times.emplace_back(source_boot_uuid);
+ }
+
+ std::sort(
+ destination_boot_times.begin(), destination_boot_times.end(),
+ [](const std::pair<std::string, BootPairTimes> &a,
+ const std::pair<std::string, BootPairTimes> &b) {
+ // There are cases where we will only have a reliable timestamp.
+ // In that case, we need to use oldest_remote_monotonic_timestamp.
+ // But, that may result in collisions if the same message gets
+ // forwarded to both boots, so it will have the same timestamp.
+ // Solve that by breaking the tie with the unreliable messages.
+ if (a.second.oldest_remote_monotonic_timestamp ==
+ b.second.oldest_remote_monotonic_timestamp) {
+ CHECK_NE(a.second.oldest_remote_unreliable_monotonic_timestamp,
+ b.second.oldest_remote_unreliable_monotonic_timestamp);
+ return a.second.oldest_remote_unreliable_monotonic_timestamp <
+ b.second.oldest_remote_unreliable_monotonic_timestamp;
+ } else {
+ return a.second.oldest_remote_monotonic_timestamp <
+ b.second.oldest_remote_monotonic_timestamp;
+ }
+ });
+
+ for (size_t boot_id = 0; boot_id < destination_boot_times.size();
+ ++boot_id) {
+ const std::pair<std::string, BootPairTimes> &boot_time =
+ destination_boot_times[boot_id];
+ const std::string &source_boot_uuid = boot_time.first;
+
+ auto destination_node_boot_constraints_it =
+ boot_constraints.find(source_node.first);
+ if (destination_node_boot_constraints_it == boot_constraints.end()) {
+ destination_node_boot_constraints_it =
+ boot_constraints
+ .insert(std::make_pair(source_node.first, NodeBootState()))
+ .first;
+ }
+
+ // Track that this boot happened.
+ destination_node_boot_constraints_it->second.boots.insert(
+ source_boot_uuid);
+ if (boot_id > 0) {
+ const std::pair<std::string, BootPairTimes> &prior_boot_time =
+ destination_boot_times[boot_id - 1];
+ const std::string &prior_boot_uuid = prior_boot_time.first;
+
+ std::map<std::string, std::vector<std::pair<std::string, bool>>>
+ &per_node_boot_constraints =
+ destination_node_boot_constraints_it->second.constraints;
+
+ auto first_per_boot_constraints =
+ per_node_boot_constraints.find(prior_boot_uuid);
+ if (first_per_boot_constraints == per_node_boot_constraints.end()) {
+ first_per_boot_constraints =
+ per_node_boot_constraints
+ .insert(std::make_pair(
+ prior_boot_uuid,
+ std::vector<std::pair<std::string, bool>>()))
+ .first;
+ }
+
+ auto second_per_boot_constraints =
+ per_node_boot_constraints.find(source_boot_uuid);
+ if (second_per_boot_constraints ==
+ per_node_boot_constraints.end()) {
+ second_per_boot_constraints =
+ per_node_boot_constraints
+ .insert(std::make_pair(
+ source_boot_uuid,
+ std::vector<std::pair<std::string, bool>>()))
+ .first;
+ }
+
+ first_per_boot_constraints->second.emplace_back(
+ std::make_pair(source_boot_uuid, true));
+ second_per_boot_constraints->second.emplace_back(
+ std::make_pair(prior_boot_uuid, false));
+ }
+ }
+ }
+ }
+ }
+
return boot_constraints;
}
diff --git a/aos/events/logging/logger.fbs b/aos/events/logging/logger.fbs
index 6d9f7cb..eb70184 100644
--- a/aos/events/logging/logger.fbs
+++ b/aos/events/logging/logger.fbs
@@ -136,6 +136,9 @@
// For all channels sent from a specific node, these vectors hold the
// timestamp of the oldest known message from that node, and the
// corresponding monotonic timestamp for when that was received on our node.
+ //
+ // The local node is the node that this log file is from the perspective of
+ // (field 6)
corrupted_oldest_remote_monotonic_timestamps:[int64] (id: 20, deprecated);
corrupted_oldest_local_monotonic_timestamps:[int64] (id: 21, deprecated);
oldest_remote_monotonic_timestamps:[int64] (id: 24);
diff --git a/aos/events/logging/logger_test.cc b/aos/events/logging/logger_test.cc
index 1f784d3..55bf687 100644
--- a/aos/events/logging/logger_test.cc
+++ b/aos/events/logging/logger_test.cc
@@ -2518,6 +2518,244 @@
}
}
+// Tests that we can sort a log which only has timestamps from the remote
+// because the local message_bridge_client failed to connect.
+TEST_P(MultinodeLoggerTest, RemoteRebootOnlyTimestamps) {
+ const UUID pi1_boot0 = UUID::Random();
+ const UUID pi2_boot0 = UUID::Random();
+ const UUID pi2_boot1 = UUID::Random();
+ {
+ CHECK_EQ(pi1_index_, 0u);
+ CHECK_EQ(pi2_index_, 1u);
+
+ time_converter_.set_boot_uuid(pi1_index_, 0, pi1_boot0);
+ time_converter_.set_boot_uuid(pi2_index_, 0, pi2_boot0);
+ time_converter_.set_boot_uuid(pi2_index_, 1, pi2_boot1);
+
+ time_converter_.AddNextTimestamp(
+ distributed_clock::epoch(),
+ {BootTimestamp::epoch(), BootTimestamp::epoch()});
+ const chrono::nanoseconds reboot_time = chrono::milliseconds(10100);
+ time_converter_.AddNextTimestamp(
+ distributed_clock::epoch() + reboot_time,
+ {BootTimestamp::epoch() + reboot_time,
+ BootTimestamp{
+ .boot = 1,
+ .time = monotonic_clock::epoch() + chrono::milliseconds(1323)}});
+ }
+ pi2_->Disconnect(pi1_->node());
+
+ std::vector<std::string> filenames;
+ {
+ LoggerState pi1_logger = MakeLogger(pi1_);
+
+ event_loop_factory_.RunFor(chrono::milliseconds(95));
+ EXPECT_EQ(event_loop_factory_.GetNodeEventLoopFactory("pi1")->boot_uuid(),
+ pi1_boot0);
+ EXPECT_EQ(event_loop_factory_.GetNodeEventLoopFactory("pi2")->boot_uuid(),
+ pi2_boot0);
+
+ StartLogger(&pi1_logger);
+
+ event_loop_factory_.RunFor(chrono::milliseconds(10000));
+
+ VLOG(1) << "Reboot now!";
+
+ event_loop_factory_.RunFor(chrono::milliseconds(20000));
+ EXPECT_EQ(event_loop_factory_.GetNodeEventLoopFactory("pi1")->boot_uuid(),
+ pi1_boot0);
+ EXPECT_EQ(event_loop_factory_.GetNodeEventLoopFactory("pi2")->boot_uuid(),
+ pi2_boot1);
+ pi1_logger.AppendAllFilenames(&filenames);
+ }
+
+ // Confirm that our new oldest timestamps properly update as we reboot and
+ // rotate.
+ size_t timestamp_file_count = 0;
+ for (const std::string &file : filenames) {
+ std::optional<SizePrefixedFlatbufferVector<LogFileHeader>> log_header =
+ ReadHeader(file);
+ CHECK(log_header);
+
+ if (log_header->message().has_configuration()) {
+ continue;
+ }
+
+ const monotonic_clock::time_point monotonic_start_time =
+ monotonic_clock::time_point(
+ chrono::nanoseconds(log_header->message().monotonic_start_time()));
+ const UUID source_node_boot_uuid = UUID::FromString(
+ log_header->message().source_node_boot_uuid()->string_view());
+
+ ASSERT_TRUE(log_header->message().has_oldest_remote_monotonic_timestamps());
+ ASSERT_EQ(
+ log_header->message().oldest_remote_monotonic_timestamps()->size(), 2u);
+ ASSERT_TRUE(log_header->message().has_oldest_local_monotonic_timestamps());
+ ASSERT_EQ(log_header->message().oldest_local_monotonic_timestamps()->size(),
+ 2u);
+ ASSERT_TRUE(log_header->message()
+ .has_oldest_remote_unreliable_monotonic_timestamps());
+ ASSERT_EQ(log_header->message()
+ .oldest_remote_unreliable_monotonic_timestamps()
+ ->size(),
+ 2u);
+ ASSERT_TRUE(log_header->message()
+ .has_oldest_local_unreliable_monotonic_timestamps());
+ ASSERT_EQ(log_header->message()
+ .oldest_local_unreliable_monotonic_timestamps()
+ ->size(),
+ 2u);
+
+ if (log_header->message().node()->name()->string_view() != "pi1") {
+ ASSERT_TRUE(file.find("aos.message_bridge.RemoteMessage") !=
+ std::string::npos);
+
+ const std::optional<SizePrefixedFlatbufferVector<MessageHeader>> msg =
+ ReadNthMessage(file, 0);
+ CHECK(msg);
+
+ EXPECT_TRUE(msg->message().has_monotonic_sent_time());
+ EXPECT_TRUE(msg->message().has_monotonic_remote_time());
+
+ const monotonic_clock::time_point
+ expected_oldest_local_monotonic_timestamps(
+ chrono::nanoseconds(msg->message().monotonic_sent_time()));
+ const monotonic_clock::time_point
+ expected_oldest_remote_monotonic_timestamps(
+ chrono::nanoseconds(msg->message().monotonic_remote_time()));
+
+ EXPECT_NE(expected_oldest_local_monotonic_timestamps,
+ monotonic_clock::min_time);
+ EXPECT_NE(expected_oldest_remote_monotonic_timestamps,
+ monotonic_clock::min_time);
+
+ ++timestamp_file_count;
+ // Since the log file is from the perspective of the other node,
+ const monotonic_clock::time_point oldest_remote_monotonic_timestamps =
+ monotonic_clock::time_point(chrono::nanoseconds(
+ log_header->message().oldest_remote_monotonic_timestamps()->Get(
+ 0)));
+ const monotonic_clock::time_point oldest_local_monotonic_timestamps =
+ monotonic_clock::time_point(chrono::nanoseconds(
+ log_header->message().oldest_local_monotonic_timestamps()->Get(
+ 0)));
+ const monotonic_clock::time_point
+ oldest_remote_unreliable_monotonic_timestamps =
+ monotonic_clock::time_point(chrono::nanoseconds(
+ log_header->message()
+ .oldest_remote_unreliable_monotonic_timestamps()
+ ->Get(0)));
+ const monotonic_clock::time_point
+ oldest_local_unreliable_monotonic_timestamps =
+ monotonic_clock::time_point(chrono::nanoseconds(
+ log_header->message()
+ .oldest_local_unreliable_monotonic_timestamps()
+ ->Get(0)));
+ // Confirm that the oldest timestamps match what we expect. Based on what
+ // we are doing, we know that the oldest time is the first message's time.
+ //
+ // This makes the test robust to both the split and combined config tests.
+ switch (log_header->message().parts_index()) {
+ case 0:
+ case 1:
+ EXPECT_EQ(oldest_remote_monotonic_timestamps,
+ expected_oldest_remote_monotonic_timestamps);
+ EXPECT_EQ(oldest_local_monotonic_timestamps,
+ expected_oldest_local_monotonic_timestamps);
+ EXPECT_EQ(oldest_remote_unreliable_monotonic_timestamps,
+ expected_oldest_remote_monotonic_timestamps);
+ EXPECT_EQ(oldest_local_unreliable_monotonic_timestamps,
+ expected_oldest_local_monotonic_timestamps);
+ break;
+ default:
+ FAIL();
+ break;
+ }
+
+ switch (log_header->message().parts_index()) {
+ case 0:
+ EXPECT_EQ(source_node_boot_uuid, pi2_boot0);
+ EXPECT_EQ(monotonic_start_time, monotonic_clock::min_time);
+ break;
+ case 1:
+ EXPECT_EQ(source_node_boot_uuid, pi2_boot1);
+ EXPECT_EQ(monotonic_start_time, monotonic_clock::min_time);
+ break;
+ default:
+ FAIL();
+ break;
+ }
+
+ continue;
+ }
+ EXPECT_EQ(
+ log_header->message().oldest_remote_monotonic_timestamps()->Get(0),
+ monotonic_clock::max_time.time_since_epoch().count());
+ EXPECT_EQ(log_header->message().oldest_local_monotonic_timestamps()->Get(0),
+ monotonic_clock::max_time.time_since_epoch().count());
+ EXPECT_EQ(log_header->message()
+ .oldest_remote_unreliable_monotonic_timestamps()
+ ->Get(0),
+ monotonic_clock::max_time.time_since_epoch().count());
+ EXPECT_EQ(log_header->message()
+ .oldest_local_unreliable_monotonic_timestamps()
+ ->Get(0),
+ monotonic_clock::max_time.time_since_epoch().count());
+
+ const monotonic_clock::time_point oldest_remote_monotonic_timestamps =
+ monotonic_clock::time_point(chrono::nanoseconds(
+ log_header->message().oldest_remote_monotonic_timestamps()->Get(
+ 1)));
+ const monotonic_clock::time_point oldest_local_monotonic_timestamps =
+ monotonic_clock::time_point(chrono::nanoseconds(
+ log_header->message().oldest_local_monotonic_timestamps()->Get(1)));
+ const monotonic_clock::time_point
+ oldest_remote_unreliable_monotonic_timestamps =
+ monotonic_clock::time_point(chrono::nanoseconds(
+ log_header->message()
+ .oldest_remote_unreliable_monotonic_timestamps()
+ ->Get(1)));
+ const monotonic_clock::time_point
+ oldest_local_unreliable_monotonic_timestamps =
+ monotonic_clock::time_point(chrono::nanoseconds(
+ log_header->message()
+ .oldest_local_unreliable_monotonic_timestamps()
+ ->Get(1)));
+ switch (log_header->message().parts_index()) {
+ case 0:
+ EXPECT_EQ(oldest_remote_monotonic_timestamps,
+ monotonic_clock::max_time);
+ EXPECT_EQ(oldest_local_monotonic_timestamps, monotonic_clock::max_time);
+ EXPECT_EQ(oldest_remote_unreliable_monotonic_timestamps,
+ monotonic_clock::max_time);
+ EXPECT_EQ(oldest_local_unreliable_monotonic_timestamps,
+ monotonic_clock::max_time);
+ break;
+ default:
+ FAIL();
+ break;
+ }
+ }
+
+ EXPECT_TRUE(timestamp_file_count == 2u || timestamp_file_count == 4u);
+
+ // Confirm that we can actually sort the resulting log and read it.
+ {
+ LogReader reader(SortParts(filenames));
+
+ SimulatedEventLoopFactory log_reader_factory(reader.configuration());
+ log_reader_factory.set_send_delay(chrono::microseconds(0));
+
+ // This sends out the fetched messages and advances time to the start of
+ // the log file.
+ reader.Register(&log_reader_factory);
+
+ log_reader_factory.Run();
+
+ reader.Deregister();
+ }
+}
+
// Tests that we properly handle one direction of message_bridge being
// unavailable.
TEST_P(MultinodeLoggerTest, OneDirectionWithNegativeSlope) {
diff --git a/aos/network/multinode_timestamp_filter.cc b/aos/network/multinode_timestamp_filter.cc
index 72b1cc5..d6419a0 100644
--- a/aos/network/multinode_timestamp_filter.cc
+++ b/aos/network/multinode_timestamp_filter.cc
@@ -1355,7 +1355,10 @@
.boot = next_boot,
.time = timestamp_mappers_[node_a_index]->monotonic_start_time(
next_boot)};
- if (next_start_time < next_node_time) {
+ // If we don't have a start time, it doesn't make sense to solve for it.
+ // Ignore that case.
+ if (next_start_time < next_node_time &&
+ next_start_time.time != monotonic_clock::min_time) {
VLOG(1) << "Candidate for node " << node_a_index
<< " is the next startup time, " << next_start_time;
next_node_time = next_start_time;
diff --git a/build_tests/BUILD b/build_tests/BUILD
index 5d9c3bf..6a81509 100644
--- a/build_tests/BUILD
+++ b/build_tests/BUILD
@@ -1,6 +1,8 @@
load("@com_google_protobuf//:protobuf.bzl", "cc_proto_library")
load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_py_library")
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+load("//tools/build_rules:apache.bzl", "apache_wrapper")
+load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_test")
cc_test(
name = "gflags_build_test",
@@ -111,4 +113,37 @@
importpath = "github.com/frc971/971-Robot-Code/build_tests",
target_compatible_with = ["@platforms//cpu:x86_64"],
visibility = ["//visibility:private"],
+ deps = ["//build_tests/go_greeter"],
+)
+
+py_binary(
+ name = "dummy_http_server",
+ srcs = ["dummy_http_server.py"],
+ target_compatible_with = ["@platforms//cpu:x86_64"],
+)
+
+apache_wrapper(
+ name = "apache_https_demo",
+ binary = ":dummy_http_server",
+ target_compatible_with = ["@platforms//cpu:x86_64"],
+)
+
+rust_library(
+ name = "hello_lib",
+ srcs = ["hello_lib.rs"],
+ target_compatible_with = ["@platforms//os:linux"],
+)
+
+rust_test(
+ name = "hello_lib_test",
+ srcs = ["hello_lib.rs"],
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":hello_lib"],
+)
+
+rust_binary(
+ name = "rust_hello",
+ srcs = ["rust_hello.rs"],
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":hello_lib"],
)
diff --git a/build_tests/dummy_http_server.py b/build_tests/dummy_http_server.py
new file mode 100644
index 0000000..f65122a
--- /dev/null
+++ b/build_tests/dummy_http_server.py
@@ -0,0 +1,48 @@
+"""This is a dummy server to demonstrate the apache_wrapper() rule.
+
+Don't run this server on its own. Instead run the
+`//build_tests:apache_https_demo` binary.
+
+When you authenticate against Apache via LDAP, this server prints the username
+you authenticated with and the path from the GET request.
+"""
+
+import base64
+from http.server import BaseHTTPRequestHandler, HTTPServer
+import os
+
+def parse_auth(authorization):
+ auth_type, auth_info = authorization.split(" ", maxsplit=1)
+ if auth_type != "Basic":
+ raise ValueError(f"Unknown auth type: {auth_type}")
+ username, _ = base64.b64decode(auth_info).decode().split(":", 1)
+ return username
+
+class Server(BaseHTTPRequestHandler):
+ def _set_response(self):
+ self.send_response(200)
+ self.send_header("Content-type", "text/html")
+ self.end_headers()
+
+ def _write(self, text):
+ self.wfile.write(text.encode("utf-8"))
+
+ def do_GET(self):
+ self._set_response()
+ self._write(f"GET request for {self.path}")
+ self._write("<br/>")
+ username = parse_auth(self.headers["Authorization"])
+ self._write(f"Hello, {username}")
+
+def main():
+ port = int(os.environ["APACHE_WRAPPED_PORT"])
+ server_address = ("", port)
+ httpd = HTTPServer(server_address, Server)
+ try:
+ httpd.serve_forever()
+ except KeyboardInterrupt:
+ pass
+ httpd.server_close()
+
+if __name__ == "__main__":
+ main()
diff --git a/build_tests/go_greeter/BUILD b/build_tests/go_greeter/BUILD
new file mode 100644
index 0000000..b4dbdc0
--- /dev/null
+++ b/build_tests/go_greeter/BUILD
@@ -0,0 +1,16 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
+
+go_library(
+ name = "go_greeter",
+ srcs = ["greeter.go"],
+ importpath = "github.com/frc971/971-Robot-Code/build_tests/go_greeter",
+ target_compatible_with = ["@platforms//cpu:x86_64"],
+ visibility = ["//visibility:public"],
+)
+
+go_test(
+ name = "go_greeter_test",
+ srcs = ["greeter_test.go"],
+ embed = [":go_greeter"],
+ target_compatible_with = ["@platforms//cpu:x86_64"],
+)
diff --git a/build_tests/go_greeter/greeter.go b/build_tests/go_greeter/greeter.go
new file mode 100644
index 0000000..53f837a
--- /dev/null
+++ b/build_tests/go_greeter/greeter.go
@@ -0,0 +1,5 @@
+package go_greeter
+
+func Greet(name string) string {
+ return "Hello, " + name
+}
diff --git a/build_tests/go_greeter/greeter_test.go b/build_tests/go_greeter/greeter_test.go
new file mode 100644
index 0000000..207f360
--- /dev/null
+++ b/build_tests/go_greeter/greeter_test.go
@@ -0,0 +1,18 @@
+package go_greeter
+
+import "testing"
+
+func TestGreetings(t *testing.T) {
+ cases := []struct {
+ input, expected string
+ }{
+ {"world", "Hello, world"},
+ {" foobar", "Hello, foobar"},
+ }
+ for _, c := range cases {
+ greeting := Greet(c.input)
+ if greeting != c.expected {
+ t.Errorf("Got %q, but expected %q.", greeting, c.expected)
+ }
+ }
+}
diff --git a/build_tests/hello.go b/build_tests/hello.go
index d2c4e91..2c741a8 100644
--- a/build_tests/hello.go
+++ b/build_tests/hello.go
@@ -1,7 +1,11 @@
package main
-import "fmt"
+import (
+ "fmt"
+
+ "github.com/frc971/971-Robot-Code/build_tests/go_greeter"
+)
func main() {
- fmt.Println("Hello world")
+ fmt.Println(go_greeter.Greet("world"))
}
diff --git a/build_tests/hello_lib.rs b/build_tests/hello_lib.rs
new file mode 100644
index 0000000..6374ce6
--- /dev/null
+++ b/build_tests/hello_lib.rs
@@ -0,0 +1,24 @@
+pub struct Greeter {
+ greeting: String,
+}
+
+impl Greeter {
+ pub fn new(greeting: &str) -> Greeter {
+ Greeter { greeting: greeting.to_string(), }
+ }
+
+ pub fn greet(&self, thing: &str) -> String {
+ format!("{} {}", &self.greeting, thing)
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::Greeter;
+
+ #[test]
+ fn test_greeting() {
+ let hello = Greeter::new("Hi");
+ assert_eq!("Hi Rust", hello.greet("Rust"));
+ }
+}
diff --git a/build_tests/rust_hello.rs b/build_tests/rust_hello.rs
new file mode 100644
index 0000000..6c6bf9f
--- /dev/null
+++ b/build_tests/rust_hello.rs
@@ -0,0 +1,21 @@
+extern crate hello_lib;
+
+extern "C" {
+ fn sqrt(x: f64) -> f64;
+}
+
+fn main() {
+ let hello = hello_lib::Greeter::new("Hello");
+ println!("{},\n{}", hello.greet("world"), hello.greet("bazel"));
+
+ let mut numbers = Vec::new();
+ for i in 1..=10 {
+ numbers.push(i);
+ }
+ println!("{:?}", numbers);
+
+ let words = vec!["foo", "bar", "baz"];
+ println!("{:?}", words);
+
+ println!("sqrt(4) = {}", unsafe { sqrt(4.0) });
+}
diff --git a/debian/BUILD b/debian/BUILD
index 0540a28..76bcf28 100644
--- a/debian/BUILD
+++ b/debian/BUILD
@@ -3,6 +3,10 @@
python_debs = "files",
)
load(
+ ":apache2.bzl",
+ apache2_debs = "files",
+)
+load(
":patch.bzl",
patch_debs = "files",
)
@@ -112,6 +116,26 @@
)
download_packages(
+ name = "download_apache2_packages",
+ excludes = [
+ "libaprutil1-dbd-mysql",
+ "libaprutil1-dbd-odbc",
+ "libaprutil1-dbd-pgsql",
+ "libaprutil1-dbd-freetds",
+ "libstdc++6",
+ "lsb-base",
+ "debconf",
+ "libc6-dev",
+ ],
+ force_includes = [
+ "libaprutil1",
+ ],
+ packages = [
+ "apache2",
+ ],
+)
+
+download_packages(
name = "download_python_deps",
excludes = [
"libblas.so.3",
@@ -253,6 +277,12 @@
)
generate_deb_tarball(
+ name = "apache2",
+ files = apache2_debs,
+ target_compatible_with = ["@platforms//os:linux"],
+)
+
+generate_deb_tarball(
name = "patch",
files = patch_debs,
target_compatible_with = ["@platforms//os:linux"],
diff --git a/debian/apache2.BUILD b/debian/apache2.BUILD
new file mode 100644
index 0000000..7f3f87c
--- /dev/null
+++ b/debian/apache2.BUILD
@@ -0,0 +1,5 @@
+filegroup(
+ name = "all_files",
+ srcs = glob(["**"]),
+ visibility = ["//visibility:public"],
+)
diff --git a/debian/apache2.bzl b/debian/apache2.bzl
new file mode 100644
index 0000000..3d557c9
--- /dev/null
+++ b/debian/apache2.bzl
@@ -0,0 +1,59 @@
+files = {
+ "apache2-bin_2.4.52-1~deb11u2_amd64.deb": "dc0b906cb78fb55238bc1ddda5dac6917cbf1027a4372944e24a1a16aa8c9fdc",
+ "apache2-data_2.4.52-1~deb11u2_all.deb": "8fac5b05668e3d01e97f4ec2e8c52d9b138da0e2109425d6eacbcd005651068e",
+ "apache2-utils_2.4.52-1~deb11u2_amd64.deb": "a164cb0109bfbadb932cbd0a7cf8eeb1b4ed1242bc6e44394f5a343589ddca39",
+ "apache2_2.4.52-1~deb11u2_amd64.deb": "00bd5ca827ea67e0d2a10e6191595b26261f902c66096bd9e2b80fe6b606945a",
+ "debconf_1.5.77_all.deb": "d9ee4dff77aaad12674eed3ccefdcccd332424c9e2ac2ac00a37a1e06c84ab70",
+ "dpkg_1.20.9_amd64.deb": "ac90a4705b36f2d952a4a745ad944b33ff60c5ec69a5f89e4559a89bd0c53e01",
+ "gcc-10-base_10.2.1-6_amd64.deb": "be65535e94f95fbf04b104e8ab36790476f063374430f7dfc6c516cbe2d2cd1e",
+ "init-system-helpers_1.60_all.deb": "43420922c5e3aa747f8854236bf381a35179bba3885b242edb104751dad20644",
+ "libacl1_2.2.53-10_amd64.deb": "aa18d721be8aea50fbdb32cd9a319cb18a3f111ea6ad17399aa4ba9324c8e26a",
+ "libapr1_1.7.0-6+deb11u1_amd64.deb": "b95ce92c2530ba9c3a9af906f6ad27a0894efbefe9f0a2d9f2f91c6bdcdaf874",
+ "libaprutil1-dbd-sqlite3_1.6.1-5_amd64.deb": "18778f0cfc866d6230ab4f14ec3248d214e0f2a6efec5ded409aa6709d2d9255",
+ "libaprutil1-ldap_1.6.1-5_amd64.deb": "902a329ef05b94380ba9f7e413bd53086e096dc20cb0a913a4f346febc1e69e5",
+ "libaprutil1_1.6.1-5_amd64.deb": "d6aa77a54ed7533ea5c00240a677009f1b5d4e85f1607980d51ba35768c2eb39",
+ "libbrotli1_1.0.9-2+b2_amd64.deb": "65ca7d8b03e9dac09c5d544a89dd52d1aeb74f6a19583d32e4ff5f0c77624c24",
+ "libbz2-1.0_1.0.8-4_amd64.deb": "16e27c3ebd97981e70db3733f899963362748f178a62644df69d1f247e741379",
+ "libc6_2.31-13+deb11u2_amd64.deb": "3d9421c3fc0ef0d8ce57c0a149e1f8dbad78aba067f120be9e652af28902e346",
+ "libcrypt1_4.4.18-4_amd64.deb": "f617952df0c57b4ee039448e3941bccd3f97bfff71e9b0f87ca6dae15cb3f5ef",
+ "libcurl4_7.74.0-1.3+deb11u1_amd64.deb": "6f9c494eecc920899bb2c72d1a507a34b3703105778b0b9b9ae9aebdbdffcaab",
+ "libdb5.3_5.3.28+dfsg1-0.8_amd64.deb": "00b9e63e287f45300d4a4f59b6b88e25918443c932ae3e5845d5761ae193c530",
+ "libexpat1_2.2.10-2_amd64.deb": "eda6663f34375a9456c8c701002f1271bc90ac2627b9fb0892474e65eae1b668",
+ "libgcc-s1_10.2.1-6_amd64.deb": "e478f2709d8474165bb664de42e16950c391f30eaa55bc9b3573281d83a29daf",
+ "libgcrypt20_1.8.7-6_amd64.deb": "7a2e0eef8e0c37f03f3a5fcf7102a2e3dc70ba987f696ab71949f9abf36f35ef",
+ "libgdbm-compat4_1.19-2_amd64.deb": "e62caed68b0ffaa03b5fa539d6fdc08c4151f66236d5878949bead0b71b7bb09",
+ "libgdbm6_1.19-2_amd64.deb": "e54cfe4d8b8f209bb7df31a404ce040f7c2f9b1045114a927a7e1061cdf90727",
+ "libgpg-error0_1.38-2_amd64.deb": "16a507fb20cc58b5a524a0dc254a9cb1df02e1ce758a2d8abde0bc4a3c9b7c26",
+ "libicu67_67.1-7_amd64.deb": "2bf5c46254f527865bfd6368e1120908755fa57d83634bd7d316c9b3cfd57303",
+ "libjansson4_2.13.1-1.1_amd64.deb": "7025d03e4ad4177a06692bd8e6edcbdebf7fd3897e5f29b70ae968e17e57f6fa",
+ "liblua5.3-0_5.3.3-1.1+b1_amd64.deb": "98d5a85075a936ff014f639552882914064e46bfbbdc4bc80e80db33a9c77602",
+ "liblz4-1_1.9.3-2_amd64.deb": "79ac6e9ca19c483f2e8effcc3401d723dd9dbb3a4ae324714de802adb21a8117",
+ "liblzma5_5.2.5-2_amd64.deb": "eed58eb6b62208685dbe42a05582e78bd48c8d879d7ae0b61f114265d18824db",
+ "libncurses6_6.2+20201114-2_amd64.deb": "dfe45cb6ab048d1182175df55b007a4a188515c6d764a4dd5a44a0b47b6286a1",
+ "libncursesw6_6.2+20201114-2_amd64.deb": "ee3cd315dfa18865cf888ba6813a552077a4f3d1439dd225e4a0d0fee53aadc2",
+ "libnghttp2-14_1.43.0-1_amd64.deb": "a1a8aae24ced43025c94a9cb0c0eabfb3fc070785de9ee51c9a3a4fe86f0d11e",
+ "libpcre2-8-0_10.36-2_amd64.deb": "d31e4d6c04e847194b36b13ab59c578775aa12f04c48a840922796bd1f5eb32a",
+ "libpcre3_8.39-13_amd64.deb": "48efcf2348967c211cd9408539edf7ec3fa9d800b33041f6511ccaecc1ffa9d0",
+ "libperl5.32_5.32.1-4+deb11u2_amd64.deb": "224cafe65968deb83168113b74dff2d2f13b115a41d99eb209ed3b8f981df0b3",
+ "libprocps8_3.3.17-5_amd64.deb": "0a60017f0229cd4eec95b9f354c68312cc4ca4770ba8c01f545fd9c02b34e8a0",
+ "libpsl5_0.21.0-1.2_amd64.deb": "d716f5b4346ec85bb728f4530abeb1da4a79f696c72d7f774c59ba127c202fa7",
+ "librtmp1_2.4+20151223.gitfa8646d.1-2+b2_amd64.deb": "e1f69020dc2c466e421ec6a58406b643be8b5c382abf0f8989011c1d3df91c87",
+ "libselinux1_3.1-3_amd64.deb": "339f5ede10500c16dd7192d73169c31c4b27ab12130347275f23044ec8c7d897",
+ "libsqlite3-0_3.34.1-3_amd64.deb": "a0b8d3acf4a0483048637637d269be93af48d5c16f6f139f53edd13384ad4686",
+ "libssh2-1_1.9.0-2_amd64.deb": "f730fe45716a206003597819ececeeffe0fff754bdbbd0105425a177aa20a2de",
+ "libssl1.1_1.1.1k-1+deb11u1_amd64.deb": "82e6ded36e4fa4c28dcec00369b36ee242975f4c110f755a970a56d03d410ffb",
+ "libsystemd0_247.3-6_amd64.deb": "8c948d9d97178e6617f549822db2b89e23b1bfa1ee745ffbf0e41b6ee64f8737",
+ "libtinfo6_6.2+20201114-2_amd64.deb": "aeaf942c71ecc0ed081efdead1a1de304dcd513a9fc06791f26992e76986597b",
+ "libuuid1_2.36.1-8_amd64.deb": "94f13f58ac45ae850559e6bfe1a02be72566c66761e628a2599cc85066cb84d3",
+ "libxml2_2.9.10+dfsg-6.7_amd64.deb": "023296a15e1a28607609cb15c7ca0dd8a25160f3e89a0da58368319c7e17d4e0",
+ "libzstd1_1.4.8+dfsg-2.1_amd64.deb": "5dcadfbb743bfa1c1c773bff91c018f835e8e8c821d423d3836f3ab84773507b",
+ "mailcap_3.69_all.deb": "63fa5520f05d2aea5ca23eee95981a5e029608e1186ded4143470c8f84184158",
+ "media-types_4.0.0_all.deb": "f9835dcf3cdbaf163104d4e511c9c4e0f41a56822e147e57f28f749fcbf7d44c",
+ "mime-support_3.66_all.deb": "b964e671e6c47674879a3e54130b6737e8760fbd3da6afcc015faa174af98ba0",
+ "perl-base_5.32.1-4+deb11u2_amd64.deb": "018a3e48e58cbc478d3a4365090fb1daa151769f90f9b45984ec9d056ef96adc",
+ "perl-modules-5.32_5.32.1-4+deb11u2_all.deb": "6fa15be322c3c89ec4a07d704ad58d4a2d1aabf866135a859f6d8d58c59e9df4",
+ "perl_5.32.1-4+deb11u2_amd64.deb": "1cebc4516ed7c240b812c7bdd7e6ea0810f513152717ca17ce139ee0dfbc7b0d",
+ "procps_3.3.17-5_amd64.deb": "ac8edf0517abe09637c36651cb6a59e10948b2879f3af9003b9145b2128a7a08",
+ "tar_1.34+dfsg-1_amd64.deb": "bd8e963c6edcf1c806df97cd73560794c347aa94b9aaaf3b88eea585bb2d2f3c",
+ "zlib1g_1.2.11.dfsg-2_amd64.deb": "af36bf9249db4372a014a21ff2b84cc5a6808e3c878feda652c78e871d5964ad",
+}
diff --git a/debian/download_packages.py b/debian/download_packages.py
index e8caebd..be43120 100755
--- a/debian/download_packages.py
+++ b/debian/download_packages.py
@@ -92,6 +92,9 @@
if package == b'libblas.so.3':
yield b'libblas3'
continue
+ if package == b'debconf-2.0':
+ yield b'debconf'
+ continue
yield package
def download_deps(apt_args, packages, excludes, force_includes):
diff --git a/frc971/imu/ADIS16505.cc b/frc971/imu/ADIS16505.cc
new file mode 100644
index 0000000..4c31cab
--- /dev/null
+++ b/frc971/imu/ADIS16505.cc
@@ -0,0 +1,736 @@
+/**
+ * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <stdio.h>
+
+#include <algorithm>
+#include <cstring>
+
+#include "hardware/dma.h"
+#include "hardware/gpio.h"
+#include "hardware/irq.h"
+#include "hardware/pio.h"
+#include "hardware/pwm.h"
+#include "hardware/spi.h"
+#include "hardware/timer.h"
+#include "pico/binary_info.h"
+#include "pico/bootrom.h"
+#include "pico/double.h"
+#include "pico/stdlib.h"
+#include "quadrature_encoder.pio.h"
+
+// Pinout definitions for the imu
+#define RST_IMU 22
+#define DR_IMU 20
+#define SYNC_IMU 21
+#define DIN_IMU 19
+#define DOUT_IMU 16
+#define SCLK_IMU 18
+#define CS_IMU 17
+
+// Pinout definitions for spi to the pi through the differential drivers
+#define DR_PI 14
+#define MOSI_PI 12
+#define MISO_PI 11
+#define SCK_PI 10
+#define CS_PI 13
+
+// The two drivetrain encoders
+#define ENC1_A 6
+#define ENC1_B 7
+#define ENC2_A 0
+#define ENC2_B 1
+
+// Backup outputs to the roborio
+#define RATE_PWM 2
+#define HEADING_PWM 4
+
+#define PWM_FREQ_HZ 200
+// PWM counts to this before wrapping
+#define PWM_TOP 62499
+
+#define SPI_IMU spi0
+#define SPI_PI spi1
+#define WRITE_BIT 0x8000
+
+// length in half-words of the buffer for communicating with the IMU
+// includes 2 non-data fields
+// the first element is used for recieving zeros while the initial request is
+// made the last element is the checksum
+#define IMU_NUM_ITEMS 17
+
+// length in bytes of the packet to the pi
+#define PI_NUM_ITEMS 42
+
+// number of samples for zeroing the z-gyro axis
+#define YAW_BUF_LEN 5000
+
+#define EXPECTED_PROD_ID 0x4079
+
+// Registers on the ADIS16505
+#define GLOB_CMD 0x68
+#define DIAG_STAT 0x02
+#define FIRM_REV 0x6C
+#define FIRM_DM 0x6E
+#define FIRM_Y 0x70
+#define PROD_ID 0x72
+#define SERIAL_NUM 0x74
+#define FILT_CTRL 0x5C
+#define MSC_CTRL 0x60
+#define DEC_RATE 0x64
+
+// TODO: replace with aos/events/logging/crc32.h
+const uint32_t kCrc32Table[256] = {
+ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
+ 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
+ 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
+ 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+ 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
+ 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
+ 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+ 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
+ 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
+ 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+ 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
+ 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
+ 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+ 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
+ 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
+ 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
+ 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
+ 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
+ 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
+ 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
+ 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
+ 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
+ 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+ 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
+ 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
+ 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+ 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
+ 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
+ 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+ 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
+ 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
+ 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
+ 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
+ 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
+ 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d};
+
+// Buffer to start a burst read and recive 15 items + checksum
+static uint16_t imu_write_buf[IMU_NUM_ITEMS] = {0x6800, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0};
+// recieves a byte of zeros followed by 15 items + checksum
+static uint16_t imu_data_buffer[IMU_NUM_ITEMS];
+
+static dma_channel_config imu_tx_config;
+static dma_channel_config imu_rx_config;
+static uint imu_dma_tx;
+static uint imu_dma_rx;
+
+// The packet to the pi contains the whole burst read from the IMU (30 bytes)
+// followed by a timestamp, encoder values, and checksum
+// DIAG_STAT, X_GYRO_LOW, X_GYRO_OUT, Y_GYRO_LOW, Y_GYRO_OUT, Z_GYRO_LOW,
+// Z_GYRO_OUT, X_ACCL_LOW, X_ACCL_OUT, Y_ACCL_LOW, Y_ACCL_OUT, Z_ACCL_LOW,
+// Z_ACCL_OUT, TEMP_OUT, DATA_CNTR, TIMESTAMP (32 bit), ENC1_POS, ENC2_POS,
+// CHECKSUM (32-bit)
+
+// the staging buffer gets updated everytime new data is received
+static uint8_t pi_staging_buffer[PI_NUM_ITEMS];
+// the data from the staging buffer is latched into the sending buffer while the
+// pi is reading
+static uint8_t pi_sending_buffer[PI_NUM_ITEMS];
+
+// for now just recieves zeros
+// but is useful because directing the dma to a nullptr messes up the transfer
+// finished interrupt
+static uint8_t pi_recieve_buffer[PI_NUM_ITEMS];
+
+static dma_channel_config pi_tx_config;
+static dma_channel_config pi_rx_config;
+static uint pi_dma_tx;
+static uint pi_dma_rx;
+
+// zeroed yaw from the latest message from the imu
+static double yaw = 0;
+static double yaw_rate = 0;
+
+// TODO: fields for the janky, not encapsulated zeroing function
+static double yaw_rate_offset = 0;
+static bool yaw_zeroed = false;
+
+static int16_t encoder1_count = 0;
+static int16_t encoder2_count = 0;
+
+static uint32_t data_collect_timestamp = 0;
+
+// if we need to reset the imu
+static bool reset_imu = false;
+// number of consectuive checksums that are mismatched or zero
+static uint suspicious_checksums = 0;
+
+// useful debug counters
+static uint imu_reset_count = 0;
+static uint checksum_mismatch_count = 0;
+static uint message_recieved_count = 0;
+static uint message_sent_count = 0;
+// the number of times we had to defer sending new data because another
+// transfer was still in progress
+static uint timing_overrun_count = 0;
+
+// the time it takes from servicing DR_IMU to finishing the transfer to the pi
+static int send_time = 0;
+
+void data_ready();
+void maybe_send_pi_packet();
+
+void gpio_irq_handler(uint gpio, uint32_t events) {
+ if (gpio == DR_IMU && (events & GPIO_IRQ_EDGE_RISE)) {
+ data_ready();
+ }
+}
+
+static inline void cs_select() {
+ gpio_put(CS_IMU, 0); // Active low
+ sleep_us(1);
+}
+
+static inline void cs_deselect() { gpio_put(CS_IMU, 1); }
+
+static uint16_t read_register(uint8_t reg_low) {
+ // For this particular device, we send the device the register we want to read
+ // first, then subsequently read from the device.
+ uint16_t output;
+
+ // The low byte of the register is first in the IMU's memory
+ uint16_t reg = ((uint16_t)reg_low) << 8;
+
+ cs_select();
+ spi_write16_blocking(SPI_IMU, ®, 1);
+ cs_deselect();
+ sleep_us(20); // wait the stall period
+ cs_select();
+ spi_read16_blocking(SPI_IMU, 0x0000, &output, 1);
+ cs_deselect();
+
+ return output;
+}
+
+static void write_register(uint8_t reg, uint16_t value) {
+ uint16_t low_byte = ((uint16_t)value) & 0xFF;
+ uint16_t high_byte = ((uint16_t)value) >> 8;
+
+ uint16_t command = (((uint16_t)reg) << 8) | low_byte | WRITE_BIT;
+
+ cs_select();
+ spi_write16_blocking(SPI_IMU, &command, 1);
+ cs_deselect();
+
+ sleep_us(20); // wait the stall period
+
+ command = ((((uint16_t)reg) + 1) << 8) | high_byte | WRITE_BIT;
+
+ cs_select();
+ spi_write16_blocking(SPI_IMU, &command, 1);
+ cs_deselect();
+}
+
+static void adis16505_reset() {
+ gpio_put(RST_IMU, 0); // Active low
+ sleep_ms(10);
+ gpio_put(RST_IMU, 1); // Active low
+ sleep_ms(310);
+}
+
+static uint32_t calculate_crc32(uint8_t *data, size_t len) {
+ uint32_t crc = 0xFFFFFFFF;
+ for (size_t i = 0; i < len; i++) {
+ crc = kCrc32Table[(crc ^ data[i]) & 0xFF] ^ (crc >> 8);
+ }
+ return crc;
+}
+
+static uint16_t check_checksum(uint16_t *buf) {
+ uint16_t sum = 0;
+ for (int i = 1; i < IMU_NUM_ITEMS - 1; i++) {
+ uint16_t low = buf[i] & 0xff;
+ uint16_t high = (buf[i] >> 8) & 0xff;
+
+ sum += high + low;
+ }
+
+ return sum;
+}
+
+static void zero_yaw(double yaw) {
+ static double yaw_buffer[YAW_BUF_LEN];
+ static int num_items;
+
+ if (num_items < YAW_BUF_LEN) {
+ yaw_buffer[num_items] = yaw;
+ num_items++;
+ } else if (!yaw_zeroed) {
+ double sum = 0;
+ for (int i = 0; i < YAW_BUF_LEN; i++) {
+ sum += yaw_buffer[i];
+ }
+ yaw_rate_offset = -sum / YAW_BUF_LEN;
+ yaw = 0;
+ printf("offset: %f\n", yaw_rate_offset);
+ yaw_zeroed = true;
+ }
+}
+
+void pack_pi_packet() {
+ // zero the buffer
+ for (int i = 0; i < PI_NUM_ITEMS; i++) {
+ pi_staging_buffer[i] = 0;
+ }
+
+ // skip empty item
+ uint8_t *imu_packet = (uint8_t *)(imu_data_buffer + 1);
+ // skip empty item and checksum and convert to bytes
+ const size_t imu_packet_len = (IMU_NUM_ITEMS - 2) * sizeof(uint16_t);
+
+ memcpy(pi_staging_buffer, imu_packet, imu_packet_len);
+ memcpy(pi_staging_buffer + imu_packet_len, &data_collect_timestamp, 4);
+ memcpy(pi_staging_buffer + imu_packet_len + 4, &encoder1_count, 2);
+ memcpy(pi_staging_buffer + imu_packet_len + 6, &encoder2_count, 2);
+
+ // exclude the part of the buffer that will be the checksum
+ uint32_t crc = calculate_crc32(pi_staging_buffer, PI_NUM_ITEMS - 4);
+ memcpy(pi_staging_buffer + imu_packet_len + 8, &crc, 4);
+
+ static_assert(PI_NUM_ITEMS == imu_packet_len +
+ sizeof(data_collect_timestamp) +
+ sizeof(encoder1_count) +
+ sizeof(encoder2_count) + sizeof(crc),
+ "PI_NUM_ITEMS needs to be able to hold the imu message + the "
+ "timestamp + the encoders + the checksum");
+}
+
+void data_ready() {
+ // save timestamp
+ data_collect_timestamp = time_us_32();
+
+ // read encoders
+ quadrature_encoder_request_count(pio0, 0);
+ quadrature_encoder_request_count(pio0, 1);
+
+ cs_select();
+ dma_channel_configure(imu_dma_tx, &imu_tx_config,
+ &spi_get_hw(SPI_IMU)->dr, // write address
+ &imu_write_buf, // read address
+ IMU_NUM_ITEMS, // element count (each element is of
+ // size transfer_data_size)
+ false); // don't start yet
+ dma_channel_configure(imu_dma_rx, &imu_rx_config,
+ &imu_data_buffer, // write address
+ &spi_get_hw(SPI_IMU)->dr, // read address
+ IMU_NUM_ITEMS, // element count (each element is of
+ // size transfer_data_size)
+ false); // don't start yet
+ dma_start_channel_mask((1u << imu_dma_tx) | (1u << imu_dma_rx));
+
+ encoder1_count = quadrature_encoder_fetch_count(pio0, 0);
+ encoder2_count = quadrature_encoder_fetch_count(pio0, 1);
+}
+
+void imu_read_finished() {
+ cs_deselect();
+
+ // TODO: check status and if necessary set flag to reset in main loop
+
+ message_recieved_count++;
+ uint16_t computed_checksum = check_checksum(imu_data_buffer);
+ uint16_t given_checksum = imu_data_buffer[IMU_NUM_ITEMS - 1];
+
+ if (computed_checksum != given_checksum) {
+ checksum_mismatch_count++;
+ for (size_t i = 0; i < IMU_NUM_ITEMS; i++) {
+ // make it clear that this data is bad
+ imu_data_buffer[i] = 0;
+ }
+ // and set an unused bit of DIAG_STAT
+ imu_data_buffer[1] = 1u << 0;
+ } else {
+ static const double dt = 0.0005; // seconds
+ int32_t z_gyro_out;
+ memcpy(&z_gyro_out, imu_data_buffer + 6, 4);
+ yaw_rate = (double)z_gyro_out / 655360.0 + yaw_rate_offset; // degrees
+ yaw += yaw_rate * dt;
+
+ // 50% is 0; -2000 deg/sec to 2000 deg/sec
+ uint16_t rate_level =
+ (std::clamp(yaw_rate, -2000.0, 2000.0) / 4000.0 + 0.5) * PWM_TOP;
+ pwm_set_gpio_level(RATE_PWM, rate_level);
+
+ // 0 to 360
+ uint16_t heading_level = (int16_t)(fmod(yaw, 360) / 360.0 * PWM_TOP);
+ pwm_set_gpio_level(HEADING_PWM, heading_level);
+ }
+
+ // if 5 or more consecutive checksums are zero, then something weird is going
+ // on with the imu
+ if (computed_checksum != given_checksum || computed_checksum == 0 ||
+ given_checksum == 0) {
+ suspicious_checksums++;
+ } else {
+ suspicious_checksums = 0;
+ }
+
+ if (suspicious_checksums >= 5) {
+ reset_imu = true;
+ }
+
+ // fill out message and add it to the queue
+ pack_pi_packet();
+
+ // TODO: this has a sleep in it
+ // stay in sync with the pi by resetting the spi fifos each transfer
+ spi_init(SPI_PI, 2000 * 1000);
+ spi_set_slave(SPI_PI, true);
+ // these settings were the most stable even though the PI is using
+ // polarity 1 and phase 1
+ spi_set_format(SPI_PI, 8, SPI_CPOL_0, SPI_CPHA_1, SPI_MSB_FIRST);
+
+ maybe_send_pi_packet();
+
+ // clear the interrupt
+ dma_hw->ints0 = 1u << imu_dma_rx;
+}
+
+void maybe_send_pi_packet() {
+ // active low; if the pi isn't connected/booted, this will
+ // also look active
+ bool cs_asserted_or_unplugged = !gpio_get(CS_PI);
+
+ if (cs_asserted_or_unplugged) {
+ // the pi is still recieving something else from us
+ timing_overrun_count++;
+ return;
+ }
+
+ memcpy(pi_sending_buffer, pi_staging_buffer, PI_NUM_ITEMS);
+
+ dma_channel_configure(pi_dma_tx, &pi_tx_config,
+ &spi_get_hw(SPI_PI)->dr, // write address
+ &pi_sending_buffer, // read address
+ PI_NUM_ITEMS, // element count (each element is
+ // of size transfer_data_size)
+ false); // don't start yet
+ dma_channel_configure(pi_dma_rx, &pi_rx_config,
+ &pi_recieve_buffer, // write address
+ &spi_get_hw(SPI_PI)->dr, // read address
+ PI_NUM_ITEMS, // element count (each element is of
+ // size transfer_data_size)
+ false); // don't start yet
+
+ // start hardware calculation of the CRC-32; currently calculated in software
+ dma_sniffer_enable(pi_dma_tx, 0x0, true);
+ dma_hw->sniff_data = 0;
+
+ // start both at exactly the same time
+ dma_start_channel_mask((1u << pi_dma_tx) | (1u << pi_dma_rx));
+ gpio_put(DR_PI, 1);
+}
+
+void pi_transfer_finished() {
+ message_sent_count++;
+ gpio_put(DR_PI, 0);
+
+ send_time = time_us_32() - data_collect_timestamp;
+
+ dma_hw->ints1 = 1u << pi_dma_rx;
+}
+
+void setup_adis16505() {
+ gpio_set_irq_enabled(DR_IMU, GPIO_IRQ_EDGE_RISE, false);
+
+ while (true) {
+ adis16505_reset();
+ // See if SPI is working - interrogate the device for its product ID
+ // number, should be 0x4079
+ uint16_t id = read_register(PROD_ID);
+ if (id == EXPECTED_PROD_ID) {
+ printf("Product id: 0x%04x == expected 0x%04x\n", id, EXPECTED_PROD_ID);
+ break;
+ } else {
+ printf("Got 0x%04x for prod id, expected 0x%04x\ntrying again\n", id,
+ EXPECTED_PROD_ID);
+ }
+ }
+
+ uint16_t firmware_revision = read_register(FIRM_REV);
+ uint16_t firmware_day_month = read_register(FIRM_DM);
+ uint16_t firmware_year = read_register(FIRM_Y);
+ uint16_t serial_number = read_register(SERIAL_NUM);
+
+ printf(
+ "Firmware revision: 0x%04x, \nFirmware day month: 0x%04x, \nFirmware "
+ "year: "
+ "0x%04x, \nSerial number: 0x%04x, \n",
+ firmware_revision, firmware_day_month, firmware_year, serial_number);
+
+ // run self test
+ int num_failures = 0;
+ while (true) {
+ write_register(GLOB_CMD, 1u << 2);
+ sleep_ms(24);
+ uint16_t diag_stat = read_register(DIAG_STAT);
+
+ // check the sensor failure bit
+ bool sensor_failure = diag_stat & (1u << 5);
+ printf("Diag stat: 0b%016b, \n", diag_stat);
+
+ if (sensor_failure) {
+ num_failures++;
+ printf("%d failures, trying again\n", num_failures);
+ } else {
+ break;
+ }
+ }
+
+ write_register(FILT_CTRL, 0 /* no filtering */);
+ write_register(
+ MSC_CTRL,
+ (1u << 9) /* enable 32-bit mode for burst reads */ |
+ (0u << 8) /* send gyro and accelerometer data in burst mode */ |
+ (1u << 7) /* enable gyro linear g compensation */ |
+ (1u << 6) /* enable point of percussion alignment */ |
+ (0u << 2) /* internal clock mode */ |
+ (0u << 1) /* sync polarity, doesn't matter */ |
+ (1u << 0) /* data ready is active high */);
+ // Rate of the output will be 2000 / (DEC_RATE + 1) Hz.
+ write_register(DEC_RATE, 0 /* no decimation */);
+
+ sleep_us(200);
+
+ imu_reset_count++;
+
+ gpio_set_irq_enabled_with_callback(DR_IMU, GPIO_IRQ_EDGE_RISE, true,
+ &gpio_irq_handler);
+}
+
+int main() {
+ stdio_init_all();
+
+ // Use 1MHz with the IMU as that is the limit for burst mode.
+ spi_init(SPI_IMU, 1000 * 1000);
+ spi_set_format(SPI_IMU, 16, SPI_CPOL_1, SPI_CPHA_1, SPI_MSB_FIRST);
+ gpio_set_function(DOUT_IMU, GPIO_FUNC_SPI);
+ gpio_set_function(SCLK_IMU, GPIO_FUNC_SPI);
+ gpio_set_function(DIN_IMU, GPIO_FUNC_SPI);
+ // Make the SPI pins available to picotool
+ bi_decl(bi_3pins_with_func(DOUT_IMU, DIN_IMU, SCLK_IMU, GPIO_FUNC_SPI));
+
+ // Chip select is active-low, so we'll initialise it to a driven-high state
+ gpio_init(CS_IMU);
+ gpio_set_dir(CS_IMU, GPIO_OUT);
+ gpio_put(CS_IMU, 1);
+ // Make the CS pin available to picotool
+ bi_decl(bi_1pin_with_name(CS_IMU, "IMU CS"));
+
+ // Reset is active-low, so we'll initialise it to a driven-high state
+ gpio_init(RST_IMU);
+ gpio_set_dir(RST_IMU, GPIO_OUT);
+ gpio_put(RST_IMU, 1);
+ // Make the RST pin available to picotool
+ bi_decl(bi_1pin_with_name(RST_IMU, "IMU RESET"));
+
+ imu_dma_tx = dma_claim_unused_channel(true);
+ imu_dma_rx = dma_claim_unused_channel(true);
+
+ // We set the outbound DMA to transfer from a memory buffer to the SPI
+ // transmit FIFO paced by the SPI TX FIFO DREQ The default is for the read
+ // address to increment every element (in this case 2 bytes - DMA_SIZE_16) and
+ // for the write address to remain unchanged.
+
+ imu_tx_config = dma_channel_get_default_config(imu_dma_tx);
+ channel_config_set_transfer_data_size(&imu_tx_config, DMA_SIZE_16);
+ channel_config_set_dreq(&imu_tx_config, spi_get_dreq(SPI_IMU, true));
+ channel_config_set_read_increment(&imu_tx_config, true);
+ channel_config_set_write_increment(&imu_tx_config, false);
+
+ // We set the inbound DMA to transfer from the SPI receive FIFO to a memory
+ // buffer paced by the SPI RX FIFO DREQ We configure the read address to
+ // remain unchanged for each element, but the write address to increment (so
+ // data is written throughout the buffer)
+ imu_rx_config = dma_channel_get_default_config(imu_dma_rx);
+ channel_config_set_transfer_data_size(&imu_rx_config, DMA_SIZE_16);
+ channel_config_set_dreq(&imu_rx_config, spi_get_dreq(SPI_IMU, false));
+ channel_config_set_read_increment(&imu_rx_config, false);
+ channel_config_set_write_increment(&imu_rx_config, true);
+
+ // Tell the DMA to raise IRQ line 0 when the channel finishes a block
+ dma_channel_set_irq0_enabled(imu_dma_rx, true);
+
+ // Configure the processor to run dma_handler() when DMA IRQ 0 is asserted
+ irq_set_exclusive_handler(DMA_IRQ_0, imu_read_finished);
+ irq_set_enabled(DMA_IRQ_0, true);
+
+ // Use 2MHz with the PI as that is the maximum speed for the pico
+ gpio_set_function(MISO_PI, GPIO_FUNC_SPI);
+ gpio_set_function(MOSI_PI, GPIO_FUNC_SPI);
+ gpio_set_function(SCK_PI, GPIO_FUNC_SPI);
+ gpio_set_function(CS_PI, GPIO_FUNC_SPI);
+ // Make the SPI pins available to picotool
+ bi_decl(bi_3pins_with_func(DOUT_IMU, DIN_IMU, SCLK_IMU, GPIO_FUNC_SPI));
+
+ gpio_init(DR_PI);
+ gpio_set_dir(DR_PI, GPIO_OUT);
+ gpio_put(DR_PI, 0);
+ // Make the CS pin available to picotool
+ bi_decl(bi_1pin_with_name(DR_PI, "DATA READY PI"));
+
+ pi_dma_tx = dma_claim_unused_channel(true);
+ pi_dma_rx = dma_claim_unused_channel(true);
+
+ // We set the outbound DMA to transfer from a memory buffer to the SPI
+ // transmit FIFO paced by the SPI TX FIFO DREQ The default is for the read
+ // address to increment every element (in this case 2 bytes - DMA_SIZE_16) and
+ // for the write address to remain unchanged.
+
+ pi_tx_config = dma_channel_get_default_config(pi_dma_tx);
+ channel_config_set_transfer_data_size(&pi_tx_config, DMA_SIZE_8);
+ channel_config_set_dreq(&pi_tx_config, spi_get_dreq(SPI_PI, true));
+ channel_config_set_read_increment(&pi_tx_config, true);
+ channel_config_set_write_increment(&pi_tx_config, false);
+
+ // We set the inbound DMA to transfer from the SPI receive FIFO to a memory
+ // buffer paced by the SPI RX FIFO DREQ We configure the read address to
+ // remain unchanged for each element, but the write address to increment (so
+ // data is written throughout the buffer)
+ pi_rx_config = dma_channel_get_default_config(pi_dma_rx);
+ channel_config_set_transfer_data_size(&pi_rx_config, DMA_SIZE_8);
+ channel_config_set_dreq(&pi_rx_config, spi_get_dreq(SPI_PI, false));
+ channel_config_set_read_increment(&pi_rx_config, false);
+ channel_config_set_write_increment(&pi_rx_config, true);
+
+ // Tell the DMA to raise IRQ line 1 when the channel finishes a block
+ dma_channel_set_irq1_enabled(pi_dma_rx, true);
+
+ // Configure the processor to run dma_handler() when DMA IRQ 0 is asserted
+ irq_set_exclusive_handler(DMA_IRQ_1, pi_transfer_finished);
+ irq_set_enabled(DMA_IRQ_1, true);
+
+ /* All IRQ priorities are initialized to PICO_DEFAULT_IRQ_PRIORITY by the pico
+ * runtime at startup.
+ *
+ * Handler | Interrupt | Cause of interrupt
+ * --------------------|--------------|---------------------------------------
+ * imu_read_finished | DMA_IRQ_0 | When the dma read from the imu is done
+ * pi_transfer_finished| DMA_IRQ_1 | When the dma read to the pi is
+ * done data_ready | IO_IRQ_BANK0 | On the rising edge of DR_IMU
+ */
+
+ // Tell the GPIOs they are allocated to PWM
+ gpio_set_function(HEADING_PWM, GPIO_FUNC_PWM);
+ gpio_set_function(RATE_PWM, GPIO_FUNC_PWM);
+
+ // Find out which PWM slice is connected to each gpio pin
+ uint heading_slice = pwm_gpio_to_slice_num(HEADING_PWM);
+ uint rate_slice = pwm_gpio_to_slice_num(RATE_PWM);
+
+ /* frequency_pwm = f_sys / ((TOP + 1) * (CSR_PHASE_CORRECT + 1) * (DIV_INT +
+ * DIV_FRAC / 16))
+ *
+ * f_sys = 125 mhz
+ * CSR_PHASE_CORRECT = 0; no phase correct
+ * TARGET_FREQ = 200 hz
+ *
+ * 125 mhz / x = 200 hz * 62500
+ *
+ * TOP = 62499
+ * DIV_INT = 10
+ */
+
+ float divisor = clock_get_hz(clk_sys) / (PWM_TOP + 1) / PWM_FREQ_HZ;
+
+ pwm_config cfg = pwm_get_default_config();
+ pwm_config_set_clkdiv_mode(&cfg, PWM_DIV_FREE_RUNNING);
+ pwm_config_set_clkdiv(&cfg, divisor);
+ pwm_config_set_wrap(&cfg, PWM_TOP);
+
+ pwm_init(heading_slice, &cfg, true);
+ pwm_init(rate_slice, &cfg, true);
+
+ // the two state machine instances use the same program memory from pio0
+ uint offset = pio_add_program(pio0, &quadrature_encoder_program);
+ quadrature_encoder_program_init(pio0, 0, offset, ENC1_A, 0);
+ quadrature_encoder_program_init(pio0, 1, offset, ENC2_A, 0);
+
+ sleep_ms(3 * 1000);
+
+ printf("Hello ADIS16505\n");
+
+ printf(
+ "System clock: %d hz\n"
+ "PWM target frequency: %d hz, PWM clock divisor: "
+ "%f, PWM TOP: %d\n",
+ clock_get_hz(clk_sys), PWM_FREQ_HZ, divisor, PWM_TOP);
+
+ setup_adis16505();
+
+ while (!yaw_zeroed) {
+ dma_channel_wait_for_finish_blocking(imu_dma_rx);
+ sleep_us(100);
+ zero_yaw(yaw_rate);
+ }
+
+ printf("Press q to enter bootloader\n");
+
+ while (1) {
+ dma_channel_wait_for_finish_blocking(imu_dma_rx);
+ // we want the interrupts to happen before or during the sleep so that we
+ // can get a good picture of what's going on without things moving around
+ sleep_us(100);
+
+ if (reset_imu) {
+ printf("Triggered IMU reset, resetting\n");
+ setup_adis16505();
+ reset_imu = false;
+ }
+
+ // debug
+ // one printf is faster than many printfs
+ printf(
+ "Z pos is %f encoder: %d %d\n"
+ "Num failed checksums: %d, Total messages recieved: %d,\n"
+ "Num messages to pi: %d, Timing overrun count: %d,\n"
+ "Send time: %d us, suspicious checksum count: %u,\n"
+ "IMU reset count: %d, checksum: %u,\n",
+ yaw, encoder1_count, encoder2_count, checksum_mismatch_count,
+ message_recieved_count, message_sent_count, timing_overrun_count,
+ send_time, suspicious_checksums, imu_reset_count,
+ imu_data_buffer[IMU_NUM_ITEMS - 1]);
+
+ // allow the user to enter the bootloader without removing power or having
+ // to install a reset button
+ char user_input = getchar_timeout_us(0);
+ if (user_input == 'q') {
+ printf("Going down! entering bootloader\n");
+ reset_usb_boot(0, 0);
+ }
+
+ sleep_ms(50);
+ }
+
+ printf("All good\n");
+ dma_channel_unclaim(imu_dma_rx);
+ dma_channel_unclaim(imu_dma_tx);
+ dma_channel_unclaim(pi_dma_rx);
+ dma_channel_unclaim(pi_dma_tx);
+ return 0;
+}
diff --git a/frc971/imu/CMakeLists.txt b/frc971/imu/CMakeLists.txt
new file mode 100644
index 0000000..e97ba8d
--- /dev/null
+++ b/frc971/imu/CMakeLists.txt
@@ -0,0 +1,47 @@
+cmake_minimum_required(VERSION 3.12)
+
+# Pull in SDK (must be before project)
+include(pico_sdk_import.cmake)
+
+project(ADIS16505_communication C CXX ASM)
+set(CMAKE_C_STANDARD 11)
+set(CMAKE_CXX_STANDARD 17)
+
+if (PICO_SDK_VERSION_STRING VERSION_LESS "1.3.0")
+ message(FATAL_ERROR "Raspberry Pi Pico SDK version 1.3.0 (or later) required. Your version is ${PICO_SDK_VERSION_STRING}")
+endif()
+
+# Initialize the SDK
+pico_sdk_init()
+
+add_compile_options(-Wall
+ -Wno-format # int != int32_t as far as the compiler is concerned because gcc has int32_t as long int
+ -Wno-unused-function # we have some for the docs that aren't called
+ -Wno-maybe-uninitialized
+ )
+
+add_executable(pico_imu_board)
+
+pico_generate_pio_header(pico_imu_board ${CMAKE_CURRENT_LIST_DIR}/quadrature_encoder.pio)
+
+target_sources(pico_imu_board PRIVATE ADIS16505.cc)
+
+# pull in common dependencies
+target_link_libraries(pico_imu_board
+ pico_stdlib
+ hardware_spi
+ hardware_dma
+ hardware_irq
+ hardware_pwm
+ hardware_pio
+ hardware_timer
+ pico_bootrom
+ pico_double
+ )
+
+# enable usb output, disable uart output
+pico_enable_stdio_usb(pico_imu_board 1)
+pico_enable_stdio_uart(pico_imu_board 1)
+
+# create map/bin/hex file etc.
+pico_add_extra_outputs(pico_imu_board)
diff --git a/frc971/imu/pico_sdk_import.cmake b/frc971/imu/pico_sdk_import.cmake
new file mode 100644
index 0000000..28efe9e
--- /dev/null
+++ b/frc971/imu/pico_sdk_import.cmake
@@ -0,0 +1,62 @@
+# This is a copy of <PICO_SDK_PATH>/external/pico_sdk_import.cmake
+
+# This can be dropped into an external project to help locate this SDK
+# It should be include()ed prior to project()
+
+if (DEFINED ENV{PICO_SDK_PATH} AND (NOT PICO_SDK_PATH))
+ set(PICO_SDK_PATH $ENV{PICO_SDK_PATH})
+ message("Using PICO_SDK_PATH from environment ('${PICO_SDK_PATH}')")
+endif ()
+
+if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT} AND (NOT PICO_SDK_FETCH_FROM_GIT))
+ set(PICO_SDK_FETCH_FROM_GIT $ENV{PICO_SDK_FETCH_FROM_GIT})
+ message("Using PICO_SDK_FETCH_FROM_GIT from environment ('${PICO_SDK_FETCH_FROM_GIT}')")
+endif ()
+
+if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT_PATH} AND (NOT PICO_SDK_FETCH_FROM_GIT_PATH))
+ set(PICO_SDK_FETCH_FROM_GIT_PATH $ENV{PICO_SDK_FETCH_FROM_GIT_PATH})
+ message("Using PICO_SDK_FETCH_FROM_GIT_PATH from environment ('${PICO_SDK_FETCH_FROM_GIT_PATH}')")
+endif ()
+
+set(PICO_SDK_PATH "${PICO_SDK_PATH}" CACHE PATH "Path to the Raspberry Pi Pico SDK")
+set(PICO_SDK_FETCH_FROM_GIT "${PICO_SDK_FETCH_FROM_GIT}" CACHE BOOL "Set to ON to fetch copy of SDK from git if not otherwise locatable")
+set(PICO_SDK_FETCH_FROM_GIT_PATH "${PICO_SDK_FETCH_FROM_GIT_PATH}" CACHE FILEPATH "location to download SDK")
+
+if (NOT PICO_SDK_PATH)
+ if (PICO_SDK_FETCH_FROM_GIT)
+ include(FetchContent)
+ set(FETCHCONTENT_BASE_DIR_SAVE ${FETCHCONTENT_BASE_DIR})
+ if (PICO_SDK_FETCH_FROM_GIT_PATH)
+ get_filename_component(FETCHCONTENT_BASE_DIR "${PICO_SDK_FETCH_FROM_GIT_PATH}" REALPATH BASE_DIR "${CMAKE_SOURCE_DIR}")
+ endif ()
+ FetchContent_Declare(
+ pico_sdk
+ GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk
+ GIT_TAG master
+ )
+ if (NOT pico_sdk)
+ message("Downloading Raspberry Pi Pico SDK")
+ FetchContent_Populate(pico_sdk)
+ set(PICO_SDK_PATH ${pico_sdk_SOURCE_DIR})
+ endif ()
+ set(FETCHCONTENT_BASE_DIR ${FETCHCONTENT_BASE_DIR_SAVE})
+ else ()
+ message(FATAL_ERROR
+ "SDK location was not specified. Please set PICO_SDK_PATH or set PICO_SDK_FETCH_FROM_GIT to on to fetch from git."
+ )
+ endif ()
+endif ()
+
+get_filename_component(PICO_SDK_PATH "${PICO_SDK_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
+if (NOT EXISTS ${PICO_SDK_PATH})
+ message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' not found")
+endif ()
+
+set(PICO_SDK_INIT_CMAKE_FILE ${PICO_SDK_PATH}/pico_sdk_init.cmake)
+if (NOT EXISTS ${PICO_SDK_INIT_CMAKE_FILE})
+ message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' does not appear to contain the Raspberry Pi Pico SDK")
+endif ()
+
+set(PICO_SDK_PATH ${PICO_SDK_PATH} CACHE PATH "Path to the Raspberry Pi Pico SDK" FORCE)
+
+include(${PICO_SDK_INIT_CMAKE_FILE})
diff --git a/frc971/imu/quadrature_encoder.pio b/frc971/imu/quadrature_encoder.pio
new file mode 100644
index 0000000..b2a0b82
--- /dev/null
+++ b/frc971/imu/quadrature_encoder.pio
@@ -0,0 +1,165 @@
+;
+; Copyright (c) 2021 pmarques-dev @ github
+;
+; SPDX-License-Identifier: BSD-3-Clause
+;
+
+.program quadrature_encoder
+
+; this code must be loaded into address 0, but at 29 instructions, it probably
+; wouldn't be able to share space with other programs anyway
+.origin 0
+
+
+; the code works by running a loop that continuously shifts the 2 phase pins into
+; ISR and looks at the lower 4 bits to do a computed jump to an instruction that
+; does the proper "do nothing" | "increment" | "decrement" action for that pin
+; state change (or no change)
+
+; ISR holds the last state of the 2 pins during most of the code. The Y register
+; keeps the current encoder count and is incremented / decremented according to
+; the steps sampled
+
+; writing any non zero value to the TX FIFO makes the state machine push the
+; current count to RX FIFO between 6 to 18 clocks afterwards. The worst case
+; sampling loop takes 14 cycles, so this program is able to read step rates up
+; to sysclk / 14 (e.g., sysclk 125MHz, max step rate = 8.9 Msteps/sec)
+
+
+; 00 state
+ JMP update ; read 00
+ JMP decrement ; read 01
+ JMP increment ; read 10
+ JMP update ; read 11
+
+; 01 state
+ JMP increment ; read 00
+ JMP update ; read 01
+ JMP update ; read 10
+ JMP decrement ; read 11
+
+; 10 state
+ JMP decrement ; read 00
+ JMP update ; read 01
+ JMP update ; read 10
+ JMP increment ; read 11
+
+; to reduce code size, the last 2 states are implemented in place and become the
+; target for the other jumps
+
+; 11 state
+ JMP update ; read 00
+ JMP increment ; read 01
+decrement:
+ ; note: the target of this instruction must be the next address, so that
+ ; the effect of the instruction does not depend on the value of Y. The
+ ; same is true for the "JMP X--" below. Basically "JMP Y--, <next addr>"
+ ; is just a pure "decrement Y" instruction, with no other side effects
+ JMP Y--, update ; read 10
+
+ ; this is where the main loop starts
+.wrap_target
+update:
+ ; we start by checking the TX FIFO to see if the main code is asking for
+ ; the current count after the PULL noblock, OSR will have either 0 if
+ ; there was nothing or the value that was there
+ SET X, 0
+ PULL noblock
+
+ ; since there are not many free registers, and PULL is done into OSR, we
+ ; have to do some juggling to avoid losing the state information and
+ ; still place the values where we need them
+ MOV X, OSR
+ MOV OSR, ISR
+
+ ; the main code did not ask for the count, so just go to "sample_pins"
+ JMP !X, sample_pins
+
+ ; if it did ask for the count, then we push it
+ MOV ISR, Y ; we trash ISR, but we already have a copy in OSR
+ PUSH
+
+sample_pins:
+ ; we shift into ISR the last state of the 2 input pins (now in OSR) and
+ ; the new state of the 2 pins, thus producing the 4 bit target for the
+ ; computed jump into the correct action for this state
+ MOV ISR, NULL
+ IN OSR, 2
+ IN PINS, 2
+ MOV PC, ISR
+
+ ; the PIO does not have a increment instruction, so to do that we do a
+ ; negate, decrement, negate sequence
+increment:
+ MOV X, !Y
+ JMP X--, increment_cont
+increment_cont:
+ MOV Y, !X
+.wrap ; the .wrap here avoids one jump instruction and saves a cycle too
+
+
+
+% c-sdk {
+
+#include "hardware/clocks.h"
+#include "hardware/gpio.h"
+
+// max_step_rate is used to lower the clock of the state machine to save power
+// if the application doesn't require a very high sampling rate. Passing zero
+// will set the clock to the maximum, which gives a max step rate of around
+// 8.9 Msteps/sec at 125MHz
+
+static inline void quadrature_encoder_program_init(PIO pio, uint sm, uint offset, uint pin, int max_step_rate)
+{
+ pio_sm_set_consecutive_pindirs(pio, sm, pin, 2, false);
+ pio_gpio_init(pio, pin);
+ gpio_pull_up(pin);
+
+ pio_sm_config c = quadrature_encoder_program_get_default_config(offset);
+ sm_config_set_in_pins(&c, pin); // for WAIT, IN
+ sm_config_set_jmp_pin(&c, pin); // for JMP
+ // shift to left, autopull disabled
+ sm_config_set_in_shift(&c, false, false, 32);
+ // don't join FIFO's
+ sm_config_set_fifo_join(&c, PIO_FIFO_JOIN_NONE);
+
+ // passing "0" as the sample frequency,
+ if (max_step_rate == 0) {
+ sm_config_set_clkdiv(&c, 1.0);
+ } else {
+ // one state machine loop takes at most 14 cycles
+ float div = (float)clock_get_hz(clk_sys) / (14 * max_step_rate);
+ sm_config_set_clkdiv(&c, div);
+ }
+
+ pio_sm_init(pio, sm, offset, &c);
+ pio_sm_set_enabled(pio, sm, true);
+}
+
+
+// When requesting the current count we may have to wait a few cycles (average
+// ~11 sysclk cycles) for the state machine to reply. If we are reading multiple
+// encoders, we may request them all in one go and then fetch them all, thus
+// avoiding doing the wait multiple times. If we are reading just one encoder,
+// we can use the "get_count" function to request and wait
+
+static inline void quadrature_encoder_request_count(PIO pio, uint sm)
+{
+ pio->txf[sm] = 1;
+}
+
+static inline int32_t quadrature_encoder_fetch_count(PIO pio, uint sm)
+{
+ while (pio_sm_is_rx_fifo_empty(pio, sm))
+ tight_loop_contents();
+ return pio->rxf[sm];
+}
+
+static inline int32_t quadrature_encoder_get_count(PIO pio, uint sm)
+{
+ quadrature_encoder_request_count(pio, sm);
+ return quadrature_encoder_fetch_count(pio, sm);
+}
+
+%}
+
diff --git a/y2020/vision/rootfs/99-usb-mount.rules b/frc971/raspi/rootfs/99-usb-mount.rules
similarity index 100%
rename from y2020/vision/rootfs/99-usb-mount.rules
rename to frc971/raspi/rootfs/99-usb-mount.rules
diff --git a/frc971/raspi/rootfs/README.md b/frc971/raspi/rootfs/README.md
new file mode 100644
index 0000000..a9c7251
--- /dev/null
+++ b/frc971/raspi/rootfs/README.md
@@ -0,0 +1,50 @@
+This modifies a stock debian root filesystem to be able to operate as a vision
+pi. It is not trying to be reproducible, but should be good enough for FRC
+purposes.
+
+The default hostname and IP is pi-971-1, 10.9.71.101.
+ Username pi, password raspberry.
+
+Download 2021-10-30-raspios-bullseye-armhf-lite.img (or any newer
+bullseye version, as a .zip file) from
+`https://www.raspberrypi.org/downloads/raspberry-pi-os/`, extract
+(unzip) the .img file, and edit `modify_rootfs.sh` to point to it.
+
+Run modify_rootfs.sh to build the filesystem (you might need to hit
+return in a spot or two and will need sudo privileges to mount the
+partition):
+ * `modify_root.sh`
+
+VERY IMPORTANT NOTE: Before doing the next step, use `lsblk` to find
+the device and make absolutely sure this isn't your hard drive or
+something else. It will target /dev/sda by default, which in some
+computers is your default hard drive.
+
+After confirming the target device, edit the `make_sd.sh` script to point to the correct IMAGE filename, and run the `make_sd.sh` command,
+which takes the name of the pi as an argument:
+ * `make_sd.sh pi-971-1`
+
+OR, if you want to manually run this, you can deploy the image by
+copying the contents of the image to the SD card. You can do this
+manually, via
+ `dd if=2020-02-13-raspbian-bullseye-lite-frc-mods.img of=/dev/sdX bs=1M`
+
+From there, transfer the SD card to the pi, log in, `sudo` to `root`,
+and run `/root/bin/change_hostname.sh` to change the hostname to the
+actual target.
+
+
+A couple additional notes on setting this up:
+ * You'll likely need to install (`sudo apt install`) the emulation packages `proot` and `qemu-user-static` (or possibly `qemu-arm-static`)
+ * If the modify_root.sh script fails, you may need to manually unmount the image (`sudo umount ${PARTITION}` and `rmdir ${PARTITION}`) before running it again
+ * Don't be clever and try to link to the image file in a different folder. These scripts need access directly to the file and will fail otherwise
+
+
+Things to do once the SD card is complete, and you've booted a PI with it:
+
+ * Download the code:
+ Once this is completed, you can boot the pi with the newly flashed SD
+ card, and download the code to the pi using:
+ `bazel run -c opt --cpu=armv7 //y2022:pi_download_stripped -- PI_IP_ADDR
+
+ where PI_IP_ADDR is the IP address of the target pi, e.g., 10.9.71.101
diff --git a/y2020/vision/rootfs/change_hostname.sh b/frc971/raspi/rootfs/change_hostname.sh
similarity index 100%
rename from y2020/vision/rootfs/change_hostname.sh
rename to frc971/raspi/rootfs/change_hostname.sh
diff --git a/y2020/vision/rootfs/dhcpcd.conf b/frc971/raspi/rootfs/dhcpcd.conf
similarity index 100%
rename from y2020/vision/rootfs/dhcpcd.conf
rename to frc971/raspi/rootfs/dhcpcd.conf
diff --git a/y2020/vision/rootfs/frc971.service b/frc971/raspi/rootfs/frc971.service
similarity index 100%
rename from y2020/vision/rootfs/frc971.service
rename to frc971/raspi/rootfs/frc971.service
diff --git a/y2020/vision/rootfs/logind.conf b/frc971/raspi/rootfs/logind.conf
similarity index 100%
rename from y2020/vision/rootfs/logind.conf
rename to frc971/raspi/rootfs/logind.conf
diff --git a/frc971/raspi/rootfs/make_sd.sh b/frc971/raspi/rootfs/make_sd.sh
new file mode 100755
index 0000000..81f7727
--- /dev/null
+++ b/frc971/raspi/rootfs/make_sd.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+set -e
+
+# Disk image to use for creating SD card
+# NOTE: You MUST run modify_rootfs.sh on this image BEFORE running make_sd.sh
+ORIG_IMAGE="2021-10-30-raspios-bullseye-armhf-lite.img"
+IMAGE=`echo ${ORIG_IMAGE} | sed s/.img/-frc-mods.img/`
+DEVICE="/dev/sda"
+
+if mount | grep "${DEVICE}" >/dev/null ;
+then
+ echo "Overwriting a mounted partition, is ${DEVICE} the sd card?"
+ exit 1
+fi
+
+sudo dd if=${IMAGE} of=${DEVICE} bs=1M status=progress
+
+PARTITION="${IMAGE}.partition"
+
+mkdir -p "${PARTITION}"
+sudo mount "${DEVICE}2" "${PARTITION}"
+
+function target() {
+ HOME=/root/ USER=root sudo proot -0 -q qemu-arm-static -w / -r "${PARTITION}" "$@"
+}
+
+if [ "${1}" == "" ]; then
+ echo "No hostname specified, so skipping setting it."
+ echo "You do this manually on the pi by running /root/bin/change_hostname.sh PI_NAME"
+else
+ target /root/bin/change_hostname.sh "${1}"
+fi
+
+echo "Starting a shell for any manual configuration"
+target /bin/bash --rcfile /root/.bashrc
+
+# Put a timestamp on when this card got created and by whom
+TIMESTAMP_FILE="${PARTITION}/home/pi/.DiskFlashedDate.txt"
+date > "${TIMESTAMP_FILE}"
+git rev-parse HEAD >> "${TIMESTAMP_FILE}"
+whoami >> "${TIMESTAMP_FILE}"
+
+# Found I had to do a lazy force unmount ("-l" flag) to make it work reliably
+sudo umount -l "${PARTITION}"
+rmdir "${PARTITION}"
diff --git a/y2020/vision/rootfs/modify_rootfs.sh b/frc971/raspi/rootfs/modify_rootfs.sh
similarity index 77%
rename from y2020/vision/rootfs/modify_rootfs.sh
rename to frc971/raspi/rootfs/modify_rootfs.sh
index 1367314..a340c64 100755
--- a/y2020/vision/rootfs/modify_rootfs.sh
+++ b/frc971/raspi/rootfs/modify_rootfs.sh
@@ -2,8 +2,8 @@
set -xe
-# Full path to Raspberry Pi Buster disk image
-IMAGE="2020-08-20-raspios-buster-armhf-lite.img"
+# Full path to Raspberry Pi Bullseye disk image
+IMAGE="2021-10-30-raspios-bullseye-armhf-lite.img"
BOOT_PARTITION="${IMAGE}.boot_partition"
PARTITION="${IMAGE}.partition"
@@ -34,8 +34,11 @@
if ! grep "gpu_mem=128" "${BOOT_PARTITION}/config.txt"; then
echo "gpu_mem=128" | sudo tee -a "${BOOT_PARTITION}/config.txt"
fi
+# For now, disable the new libcamera driver in favor of legacy ones
+sudo sed -i s/^camera_auto_detect=1/#camera_auto_detect=1/ "${BOOT_PARTITION}/config.txt"
-sudo umount "${BOOT_PARTITION}"
+# Seeing a race condition with umount, so doing lazy umount
+sudo umount -l "${BOOT_PARTITION}"
rmdir "${BOOT_PARTITION}"
if mount | grep "${PARTITION}" >/dev/null ;
@@ -86,10 +89,21 @@
target /bin/mkdir -p /home/pi/.ssh/
cat ~/.ssh/id_rsa.pub | target tee /home/pi/.ssh/authorized_keys
+# Downloads and installs our target libraries
target /bin/bash /tmp/target_configure.sh
+# Add a file to show when this image was last modified and by whom
+TIMESTAMP_FILE="${PARTITION}/home/pi/.ImageModifiedDate.txt"
+date > "${TIMESTAMP_FILE}"
+git rev-parse HEAD >> "${TIMESTAMP_FILE}"
+whoami >> "${TIMESTAMP_FILE}"
+
# Run a prompt as root inside the target to poke around and check things.
target /bin/bash --rcfile /root/.bashrc
-sudo umount "${PARTITION}"
+sudo umount -l "${PARTITION}"
rmdir "${PARTITION}"
+
+# Move the image to a different name, to indicated we've modified it
+MOD_IMAGE_NAME=`echo ${IMAGE} | sed s/.img/-frc-mods.img/`
+mv ${IMAGE} ${MOD_IMAGE_NAME}
diff --git a/y2020/vision/rootfs/rt.conf b/frc971/raspi/rootfs/rt.conf
similarity index 100%
rename from y2020/vision/rootfs/rt.conf
rename to frc971/raspi/rootfs/rt.conf
diff --git a/y2020/vision/rootfs/sctp.conf b/frc971/raspi/rootfs/sctp.conf
similarity index 100%
rename from y2020/vision/rootfs/sctp.conf
rename to frc971/raspi/rootfs/sctp.conf
diff --git a/y2020/vision/rootfs/target_configure.sh b/frc971/raspi/rootfs/target_configure.sh
similarity index 78%
rename from y2020/vision/rootfs/target_configure.sh
rename to frc971/raspi/rootfs/target_configure.sh
index 9f2e289..3fd4d40 100755
--- a/y2020/vision/rootfs/target_configure.sh
+++ b/frc971/raspi/rootfs/target_configure.sh
@@ -19,28 +19,29 @@
git \
python3-pip \
cpufrequtils \
- libopencv-calib3d3.2 \
- libopencv-contrib3.2 \
- libopencv-core3.2 \
- libopencv-features2d3.2 \
- libopencv-flann3.2 \
- libopencv-highgui3.2 \
- libopencv-imgcodecs3.2 \
- libopencv-imgproc3.2 \
- libopencv-ml3.2 \
- libopencv-objdetect3.2 \
- libopencv-photo3.2 \
- libopencv-shape3.2 \
- libopencv-stitching3.2 \
- libopencv-superres3.2 \
- libopencv-video3.2 \
- libopencv-videoio3.2 \
- libopencv-videostab3.2 \
- libopencv-viz3.2 \
+ libopencv-calib3d4.5 \
+ libopencv-contrib4.5 \
+ libopencv-core4.5 \
+ libopencv-features2d4.5 \
+ libopencv-flann4.5 \
+ libopencv-highgui4.5 \
+ libopencv-imgcodecs4.5 \
+ libopencv-imgproc4.5 \
+ libopencv-ml4.5 \
+ libopencv-objdetect4.5 \
+ libopencv-photo4.5 \
+ libopencv-shape4.5 \
+ libopencv-stitching4.5 \
+ libopencv-superres4.5 \
+ libopencv-video4.5 \
+ libopencv-videoio4.5 \
+ libopencv-videostab4.5 \
+ libopencv-viz4.5 \
python3-opencv \
libnice10 \
pmount \
- libnice-dev
+ libnice-dev \
+ feh
echo 'GOVERNOR="performance"' > /etc/default/cpufrequtils
diff --git a/y2020/vision/rootfs/usb-mount@.service b/frc971/raspi/rootfs/usb-mount@.service
similarity index 100%
rename from y2020/vision/rootfs/usb-mount@.service
rename to frc971/raspi/rootfs/usb-mount@.service
diff --git a/frc971/vision/BUILD b/frc971/vision/BUILD
new file mode 100644
index 0000000..1e3ed58
--- /dev/null
+++ b/frc971/vision/BUILD
@@ -0,0 +1,35 @@
+load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library", "flatbuffer_ts_library")
+
+flatbuffer_cc_library(
+ name = "vision_fbs",
+ srcs = ["vision.fbs"],
+ gen_reflections = 1,
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//visibility:public"],
+)
+
+flatbuffer_ts_library(
+ name = "vision_ts_fbs",
+ srcs = ["vision.fbs"],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//visibility:public"],
+)
+
+cc_library(
+ name = "v4l2_reader",
+ srcs = [
+ "v4l2_reader.cc",
+ ],
+ hdrs = [
+ "v4l2_reader.h",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":vision_fbs",
+ "//aos/events:event_loop",
+ "//aos/scoped:scoped_fd",
+ "@com_github_google_glog//:glog",
+ "@com_google_absl//absl/base",
+ ],
+)
diff --git a/y2020/vision/v4l2_reader.cc b/frc971/vision/v4l2_reader.cc
similarity index 97%
rename from y2020/vision/v4l2_reader.cc
rename to frc971/vision/v4l2_reader.cc
index 3f24f1e..793d8cd 100644
--- a/y2020/vision/v4l2_reader.cc
+++ b/frc971/vision/v4l2_reader.cc
@@ -1,4 +1,4 @@
-#include "y2020/vision/v4l2_reader.h"
+#include "frc971/vision/v4l2_reader.h"
#include <fcntl.h>
#include <linux/videodev2.h>
@@ -60,8 +60,8 @@
}
bool V4L2Reader::ReadLatestImage() {
- // First, enqueue any old buffer we already have. This is the one which may
- // have been sent.
+ // First, enqueue any old buffer we already have. This is the one which
+ // may have been sent.
if (saved_buffer_) {
EnqueueBuffer(saved_buffer_.index);
saved_buffer_.Clear();
@@ -189,8 +189,8 @@
if (result == 0) {
return;
}
- // Some devices (like Alex's webcam) return this if streaming isn't currently
- // on, unlike what the documentations says should happen.
+ // Some devices (like Alex's webcam) return this if streaming isn't
+ // currently on, unlike what the documentations says should happen.
if (errno == EBUSY) {
return;
}
diff --git a/y2020/vision/v4l2_reader.h b/frc971/vision/v4l2_reader.h
similarity index 95%
rename from y2020/vision/v4l2_reader.h
rename to frc971/vision/v4l2_reader.h
index b9b3ce4..6f90cec 100644
--- a/y2020/vision/v4l2_reader.h
+++ b/frc971/vision/v4l2_reader.h
@@ -1,5 +1,5 @@
-#ifndef Y2020_VISION_V4L2_READER_H_
-#define Y2020_VISION_V4L2_READER_H_
+#ifndef FRC971_VISION_V4L2_READER_H_
+#define FRC971_VISION_V4L2_READER_H_
#include <array>
#include <string>
@@ -9,7 +9,7 @@
#include "aos/events/event_loop.h"
#include "aos/scoped/scoped_fd.h"
-#include "y2020/vision/vision_generated.h"
+#include "frc971/vision/vision_generated.h"
namespace frc971 {
namespace vision {
@@ -119,4 +119,4 @@
} // namespace vision
} // namespace frc971
-#endif // Y2020_VISION_V4L2_READER_H_
+#endif // FRC971_VISION_V4L2_READER_H_
diff --git a/y2020/vision/vision.fbs b/frc971/vision/vision.fbs
similarity index 100%
rename from y2020/vision/vision.fbs
rename to frc971/vision/vision.fbs
diff --git a/go.mod b/go.mod
index fa311ec..7c0e058 100644
--- a/go.mod
+++ b/go.mod
@@ -6,6 +6,7 @@
github.com/buildkite/go-buildkite v2.2.0+incompatible
github.com/golang/protobuf v1.5.2
github.com/google/flatbuffers v2.0.5+incompatible
+ github.com/mattn/go-sqlite3 v1.14.10
google.golang.org/grpc v1.43.0
)
diff --git a/go.sum b/go.sum
index 0db981f..c832e6c 100644
--- a/go.sum
+++ b/go.sum
@@ -53,6 +53,8 @@
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
+github.com/mattn/go-sqlite3 v1.14.10 h1:MLn+5bFRlWMGoSRmJour3CL1w/qL96mvipqpwQW/Sfk=
+github.com/mattn/go-sqlite3 v1.14.10/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
diff --git a/go_deps.bzl b/go_deps.bzl
index 5e215ef..30d0311 100644
--- a/go_deps.bzl
+++ b/go_deps.bzl
@@ -129,6 +129,12 @@
version = "v1.16.0",
)
maybe_override_go_dep(
+ name = "com_github_mattn_go_sqlite3",
+ importpath = "github.com/mattn/go-sqlite3",
+ sum = "h1:MLn+5bFRlWMGoSRmJour3CL1w/qL96mvipqpwQW/Sfk=",
+ version = "v1.14.10",
+ )
+ maybe_override_go_dep(
name = "com_github_pmezard_go_difflib",
importpath = "github.com/pmezard/go-difflib",
sum = "h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=",
diff --git a/motors/RspBuckBoostv3/RspPiPS.pcb b/motors/RspBuckBoostv3/RspPiPS.pcb
new file mode 100644
index 0000000..68e6f62
--- /dev/null
+++ b/motors/RspBuckBoostv3/RspPiPS.pcb
@@ -0,0 +1,2542 @@
+# release: pcb 4.2.0
+
+# To read pcb files, the pcb version (or the git source date) must be >= the file version
+FileVersion[20091103]
+
+PCB["RspPiPS" 10000.00mil 10000.00mil]
+
+Grid[1.00mil 0.0000 0.0000 0]
+PolyArea[3100.006200]
+Thermal[0.500000]
+DRC[10.00mil 5.00mil 10.00mil 8.00mil 15.00mil 8.00mil]
+Flags("showdrc,nameonpcb,swapstartdir,newfullpoly,snappin,liveroute")
+Groups("1,c:4:5:2,s:6:3")
+Styles["Signal,15.00mil,36.00mil,20.00mil,10.00mil:Power,100.00mil,60.00mil,35.00mil,15.00mil:Fat,100.00mil,60.00mil,35.00mil,10.00mil:Skinny,6.00mil,24.02mil,11.81mil,6.00mil"]
+Symbol[' ' 18.00mil]
+(
+)
+Symbol['!' 12.00mil]
+(
+ SymbolLine[0.0000 45.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 0.0000 35.00mil 8.00mil]
+)
+Symbol['"' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 20.00mil 8.00mil]
+ SymbolLine[10.00mil 10.00mil 10.00mil 20.00mil 8.00mil]
+)
+Symbol['#' 12.00mil]
+(
+ SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil]
+ SymbolLine[15.00mil 20.00mil 15.00mil 40.00mil 8.00mil]
+ SymbolLine[5.00mil 20.00mil 5.00mil 40.00mil 8.00mil]
+)
+Symbol['$' 12.00mil]
+(
+ SymbolLine[15.00mil 15.00mil 20.00mil 20.00mil 8.00mil]
+ SymbolLine[5.00mil 15.00mil 15.00mil 15.00mil 8.00mil]
+ SymbolLine[0.0000 20.00mil 5.00mil 15.00mil 8.00mil]
+ SymbolLine[0.0000 20.00mil 0.0000 25.00mil 8.00mil]
+ SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[20.00mil 35.00mil 20.00mil 40.00mil 8.00mil]
+ SymbolLine[15.00mil 45.00mil 20.00mil 40.00mil 8.00mil]
+ SymbolLine[5.00mil 45.00mil 15.00mil 45.00mil 8.00mil]
+ SymbolLine[0.0000 40.00mil 5.00mil 45.00mil 8.00mil]
+ SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['%' 12.00mil]
+(
+ SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil]
+ SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil]
+ SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+ SymbolLine[10.00mil 25.00mil 15.00mil 20.00mil 8.00mil]
+ SymbolLine[5.00mil 25.00mil 10.00mil 25.00mil 8.00mil]
+ SymbolLine[0.0000 20.00mil 5.00mil 25.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 40.00mil 10.00mil 8.00mil]
+ SymbolLine[35.00mil 50.00mil 40.00mil 45.00mil 8.00mil]
+ SymbolLine[40.00mil 40.00mil 40.00mil 45.00mil 8.00mil]
+ SymbolLine[35.00mil 35.00mil 40.00mil 40.00mil 8.00mil]
+ SymbolLine[30.00mil 35.00mil 35.00mil 35.00mil 8.00mil]
+ SymbolLine[25.00mil 40.00mil 30.00mil 35.00mil 8.00mil]
+ SymbolLine[25.00mil 40.00mil 25.00mil 45.00mil 8.00mil]
+ SymbolLine[25.00mil 45.00mil 30.00mil 50.00mil 8.00mil]
+ SymbolLine[30.00mil 50.00mil 35.00mil 50.00mil 8.00mil]
+)
+Symbol['&' 12.00mil]
+(
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 15.00mil 20.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+ SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil]
+ SymbolLine[0.0000 25.00mil 25.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil]
+ SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil]
+ SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+)
+Symbol[''' 12.00mil]
+(
+ SymbolLine[0.0000 20.00mil 10.00mil 10.00mil 8.00mil]
+)
+Symbol['(' 12.00mil]
+(
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+)
+Symbol[')' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil]
+ SymbolLine[5.00mil 15.00mil 5.00mil 45.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil]
+)
+Symbol['*' 12.00mil]
+(
+ SymbolLine[0.0000 20.00mil 20.00mil 40.00mil 8.00mil]
+ SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol['+' 12.00mil]
+(
+ SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol[',' 12.00mil]
+(
+ SymbolLine[0.0000 60.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['-' 12.00mil]
+(
+ SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['.' 12.00mil]
+(
+ SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['/' 12.00mil]
+(
+ SymbolLine[0.0000 45.00mil 30.00mil 15.00mil 8.00mil]
+)
+Symbol['0' 12.00mil]
+(
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+ SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+ SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil]
+)
+Symbol['1' 12.00mil]
+(
+ SymbolLine[0.0000 18.00mil 8.00mil 10.00mil 8.00mil]
+ SymbolLine[8.00mil 10.00mil 8.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 15.00mil 50.00mil 8.00mil]
+)
+Symbol['2' 12.00mil]
+(
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+ SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+ SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 25.00mil 25.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['3' 12.00mil]
+(
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+ SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 28.00mil 15.00mil 28.00mil 8.00mil]
+ SymbolLine[20.00mil 15.00mil 20.00mil 23.00mil 8.00mil]
+ SymbolLine[20.00mil 33.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[20.00mil 33.00mil 15.00mil 28.00mil 8.00mil]
+ SymbolLine[20.00mil 23.00mil 15.00mil 28.00mil 8.00mil]
+)
+Symbol['4' 12.00mil]
+(
+ SymbolLine[0.0000 35.00mil 20.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 25.00mil 35.00mil 8.00mil]
+ SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['5' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil]
+ SymbolLine[5.00mil 25.00mil 15.00mil 25.00mil 8.00mil]
+ SymbolLine[15.00mil 25.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['6' 12.00mil]
+(
+ SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[15.00mil 28.00mil 20.00mil 33.00mil 8.00mil]
+ SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[20.00mil 33.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['7' 12.00mil]
+(
+ SymbolLine[5.00mil 50.00mil 25.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil]
+)
+Symbol['8' 12.00mil]
+(
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 37.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 37.00mil 7.00mil 30.00mil 8.00mil]
+ SymbolLine[7.00mil 30.00mil 13.00mil 30.00mil 8.00mil]
+ SymbolLine[13.00mil 30.00mil 20.00mil 37.00mil 8.00mil]
+ SymbolLine[20.00mil 37.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 23.00mil 7.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 0.0000 23.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+ SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+ SymbolLine[20.00mil 15.00mil 20.00mil 23.00mil 8.00mil]
+ SymbolLine[13.00mil 30.00mil 20.00mil 23.00mil 8.00mil]
+)
+Symbol['9' 12.00mil]
+(
+ SymbolLine[5.00mil 50.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[20.00mil 15.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+ SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol[':' 12.00mil]
+(
+ SymbolLine[0.0000 25.00mil 5.00mil 25.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol[';' 12.00mil]
+(
+ SymbolLine[0.0000 50.00mil 10.00mil 40.00mil 8.00mil]
+ SymbolLine[10.00mil 25.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['<' 12.00mil]
+(
+ SymbolLine[0.0000 30.00mil 10.00mil 20.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol['=' 12.00mil]
+(
+ SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['>' 12.00mil]
+(
+ SymbolLine[0.0000 20.00mil 10.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 40.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['?' 12.00mil]
+(
+ SymbolLine[10.00mil 30.00mil 10.00mil 35.00mil 8.00mil]
+ SymbolLine[10.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+ SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+ SymbolLine[20.00mil 15.00mil 20.00mil 20.00mil 8.00mil]
+ SymbolLine[10.00mil 30.00mil 20.00mil 20.00mil 8.00mil]
+)
+Symbol['@' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 40.00mil 8.00mil]
+ SymbolLine[0.0000 40.00mil 10.00mil 50.00mil 8.00mil]
+ SymbolLine[10.00mil 50.00mil 40.00mil 50.00mil 8.00mil]
+ SymbolLine[50.00mil 35.00mil 50.00mil 10.00mil 8.00mil]
+ SymbolLine[50.00mil 10.00mil 40.00mil 0.0000 8.00mil]
+ SymbolLine[40.00mil 0.0000 10.00mil 0.0000 8.00mil]
+ SymbolLine[10.00mil 0.0000 0.0000 10.00mil 8.00mil]
+ SymbolLine[15.00mil 20.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[20.00mil 35.00mil 30.00mil 35.00mil 8.00mil]
+ SymbolLine[30.00mil 35.00mil 35.00mil 30.00mil 8.00mil]
+ SymbolLine[35.00mil 30.00mil 40.00mil 35.00mil 8.00mil]
+ SymbolLine[35.00mil 30.00mil 35.00mil 15.00mil 8.00mil]
+ SymbolLine[35.00mil 20.00mil 30.00mil 15.00mil 8.00mil]
+ SymbolLine[20.00mil 15.00mil 30.00mil 15.00mil 8.00mil]
+ SymbolLine[20.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+ SymbolLine[40.00mil 35.00mil 50.00mil 35.00mil 8.00mil]
+)
+Symbol['A' 12.00mil]
+(
+ SymbolLine[0.0000 20.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[0.0000 20.00mil 7.00mil 10.00mil 8.00mil]
+ SymbolLine[7.00mil 10.00mil 18.00mil 10.00mil 8.00mil]
+ SymbolLine[18.00mil 10.00mil 25.00mil 20.00mil 8.00mil]
+ SymbolLine[25.00mil 20.00mil 25.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil]
+)
+Symbol['B' 12.00mil]
+(
+ SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+ SymbolLine[25.00mil 33.00mil 25.00mil 45.00mil 8.00mil]
+ SymbolLine[20.00mil 28.00mil 25.00mil 33.00mil 8.00mil]
+ SymbolLine[5.00mil 28.00mil 20.00mil 28.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+ SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+ SymbolLine[25.00mil 15.00mil 25.00mil 23.00mil 8.00mil]
+ SymbolLine[20.00mil 28.00mil 25.00mil 23.00mil 8.00mil]
+)
+Symbol['C' 12.00mil]
+(
+ SymbolLine[7.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 43.00mil 7.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 17.00mil 0.0000 43.00mil 8.00mil]
+ SymbolLine[0.0000 17.00mil 7.00mil 10.00mil 8.00mil]
+ SymbolLine[7.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['D' 12.00mil]
+(
+ SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[18.00mil 10.00mil 25.00mil 17.00mil 8.00mil]
+ SymbolLine[25.00mil 17.00mil 25.00mil 43.00mil 8.00mil]
+ SymbolLine[18.00mil 50.00mil 25.00mil 43.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 18.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 18.00mil 10.00mil 8.00mil]
+)
+Symbol['E' 12.00mil]
+(
+ SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['F' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+)
+Symbol['G' 12.00mil]
+(
+ SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+ SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+ SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+ SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['H' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil]
+)
+Symbol['I' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 10.00mil 10.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['J' 12.00mil]
+(
+ SymbolLine[7.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+ SymbolLine[15.00mil 10.00mil 15.00mil 45.00mil 8.00mil]
+ SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 0.0000 40.00mil 8.00mil]
+)
+Symbol['K' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 20.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['L' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['M' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 30.00mil 10.00mil 8.00mil]
+ SymbolLine[30.00mil 10.00mil 30.00mil 50.00mil 8.00mil]
+)
+Symbol['N' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 25.00mil 50.00mil 8.00mil]
+ SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['O' 12.00mil]
+(
+ SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+ SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+ SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['P' 12.00mil]
+(
+ SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+ SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+ SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+ SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['Q' 12.00mil]
+(
+ SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+ SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+ SymbolLine[20.00mil 15.00mil 20.00mil 40.00mil 8.00mil]
+ SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[10.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['R' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+ SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+ SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+ SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[13.00mil 30.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['S' 12.00mil]
+(
+ SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+ SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+ SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+ SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['T' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+ SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['U' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[20.00mil 10.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['V' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 10.00mil 50.00mil 8.00mil]
+ SymbolLine[10.00mil 50.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['W' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 25.00mil 50.00mil 8.00mil]
+ SymbolLine[25.00mil 50.00mil 30.00mil 30.00mil 8.00mil]
+ SymbolLine[30.00mil 30.00mil 30.00mil 10.00mil 8.00mil]
+)
+Symbol['X' 12.00mil]
+(
+ SymbolLine[0.0000 50.00mil 25.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['Y' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 10.00mil 30.00mil 8.00mil]
+ SymbolLine[10.00mil 30.00mil 20.00mil 10.00mil 8.00mil]
+ SymbolLine[10.00mil 30.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['Z' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 25.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['[' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['\' 12.00mil]
+(
+ SymbolLine[0.0000 15.00mil 30.00mil 45.00mil 8.00mil]
+)
+Symbol[']' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['^' 12.00mil]
+(
+ SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+ SymbolLine[5.00mil 10.00mil 10.00mil 15.00mil 8.00mil]
+)
+Symbol['_' 12.00mil]
+(
+ SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['a' 12.00mil]
+(
+ SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[20.00mil 45.00mil 25.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['b' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+)
+Symbol['c' 12.00mil]
+(
+ SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['d' 12.00mil]
+(
+ SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['e' 12.00mil]
+(
+ SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[0.0000 40.00mil 20.00mil 40.00mil 8.00mil]
+ SymbolLine[20.00mil 40.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['f' 10.00mil]
+(
+ SymbolLine[5.00mil 15.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil]
+ SymbolLine[10.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['g' 12.00mil]
+(
+ SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil]
+ SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil]
+ SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil]
+ SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil]
+)
+Symbol['h' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['i' 10.00mil]
+(
+ SymbolLine[0.0000 20.00mil 0.0000 21.00mil 10.00mil]
+ SymbolLine[0.0000 35.00mil 0.0000 50.00mil 8.00mil]
+)
+Symbol['j' 10.00mil]
+(
+ SymbolLine[5.00mil 20.00mil 5.00mil 21.00mil 10.00mil]
+ SymbolLine[5.00mil 35.00mil 5.00mil 60.00mil 8.00mil]
+ SymbolLine[0.0000 65.00mil 5.00mil 60.00mil 8.00mil]
+)
+Symbol['k' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 10.00mil 25.00mil 8.00mil]
+)
+Symbol['l' 10.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['m' 12.00mil]
+(
+ SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+ SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil]
+ SymbolLine[25.00mil 30.00mil 30.00mil 30.00mil 8.00mil]
+ SymbolLine[30.00mil 30.00mil 35.00mil 35.00mil 8.00mil]
+ SymbolLine[35.00mil 35.00mil 35.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['n' 12.00mil]
+(
+ SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+ SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['o' 12.00mil]
+(
+ SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['p' 12.00mil]
+(
+ SymbolLine[5.00mil 35.00mil 5.00mil 65.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+ SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+ SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+ SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+ SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+ SymbolLine[10.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['q' 12.00mil]
+(
+ SymbolLine[20.00mil 35.00mil 20.00mil 65.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['r' 12.00mil]
+(
+ SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+ SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['s' 12.00mil]
+(
+ SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+ SymbolLine[20.00mil 40.00mil 25.00mil 45.00mil 8.00mil]
+ SymbolLine[5.00mil 40.00mil 20.00mil 40.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 5.00mil 40.00mil 8.00mil]
+ SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['t' 10.00mil]
+(
+ SymbolLine[5.00mil 10.00mil 5.00mil 45.00mil 8.00mil]
+ SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 25.00mil 10.00mil 25.00mil 8.00mil]
+)
+Symbol['u' 12.00mil]
+(
+ SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+ SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['v' 12.00mil]
+(
+ SymbolLine[0.0000 30.00mil 10.00mil 50.00mil 8.00mil]
+ SymbolLine[20.00mil 30.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['w' 12.00mil]
+(
+ SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+ SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil]
+ SymbolLine[15.00mil 30.00mil 15.00mil 45.00mil 8.00mil]
+ SymbolLine[15.00mil 45.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[20.00mil 50.00mil 25.00mil 50.00mil 8.00mil]
+ SymbolLine[25.00mil 50.00mil 30.00mil 45.00mil 8.00mil]
+ SymbolLine[30.00mil 30.00mil 30.00mil 45.00mil 8.00mil]
+)
+Symbol['x' 12.00mil]
+(
+ SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['y' 12.00mil]
+(
+ SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+ SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+ SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil]
+ SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil]
+ SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil]
+ SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil]
+ SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+ SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['z' 12.00mil]
+(
+ SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['{' 12.00mil]
+(
+ SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil]
+ SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil]
+ SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+ SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil]
+ SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['|' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+)
+Symbol['}' 12.00mil]
+(
+ SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil]
+ SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil]
+ SymbolLine[5.00mil 25.00mil 10.00mil 30.00mil 8.00mil]
+ SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+ SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil]
+ SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil]
+)
+Symbol['~' 12.00mil]
+(
+ SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+ SymbolLine[5.00mil 30.00mil 10.00mil 30.00mil 8.00mil]
+ SymbolLine[10.00mil 30.00mil 15.00mil 35.00mil 8.00mil]
+ SymbolLine[15.00mil 35.00mil 20.00mil 35.00mil 8.00mil]
+ SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil]
+)
+Attribute("PCB::grid::unit" "mil")
+Attribute("PCB::grid::size" "1.00mil")
+Via[3055.00mil 3320.00mil 60.00mil 20.00mil 0.0000 35.00mil "" ""]
+Via[2925.00mil 3320.00mil 60.00mil 20.00mil 0.0000 35.00mil "" ""]
+Via[2990.00mil 3320.00mil 60.00mil 20.00mil 0.0000 35.00mil "" ""]
+Via[2855.00mil 3320.00mil 60.00mil 20.00mil 0.0000 35.00mil "" ""]
+Via[2955.00mil 4015.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(1S)"]
+Via[3020.00mil 4015.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(1S)"]
+Via[2890.00mil 4015.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(1S)"]
+Via[3225.00mil 3805.00mil 36.00mil 20.00mil 0.0000 20.00mil "" "thermal(1S,5X)"]
+Via[3045.00mil 3960.00mil 36.00mil 20.00mil 0.0000 20.00mil "" "thermal(1S)"]
+Via[3650.00mil 3900.00mil 36.00mil 20.00mil 0.0000 20.00mil "" "thermal(1S)"]
+Via[2195.00mil 3770.00mil 60.00mil 20.00mil 0.0000 35.00mil "" ""]
+Via[57.1683mm 97.9353mm 60.00mil 20.00mil 0.0000 35.00mil "" ""]
+Via[2460.00mil 3755.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2560.00mil 3755.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2080.00mil 3065.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[2325.00mil 3775.00mil 60.00mil 20.00mil 0.0000 35.00mil "" ""]
+Via[2400.00mil 3770.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(1S)"]
+Via[2090.00mil 3420.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[2090.00mil 3525.00mil 60.00mil 20.00mil 0.0000 35.00mil "" ""]
+Via[2090.00mil 3585.00mil 60.00mil 20.00mil 0.0000 35.00mil "" ""]
+Via[1920.00mil 2525.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[1860.00mil 2565.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[1800.00mil 2525.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[1745.00mil 2565.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[1690.00mil 2525.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[3430.00mil 3960.00mil 36.00mil 20.00mil 0.0000 20.00mil "" "thermal(0X,1S)"]
+Via[3460.00mil 3615.00mil 36.00mil 20.00mil 0.0000 20.00mil "" "thermal(1S)"]
+Via[3730.00mil 3600.00mil 36.00mil 20.00mil 0.0000 20.00mil "" "thermal(1S)"]
+Via[2090.00mil 3360.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[2090.00mil 3300.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[2090.00mil 3240.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[2625.00mil 3240.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[2090.00mil 3180.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[2625.00mil 3180.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[2625.00mil 3300.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[2625.00mil 3360.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[2625.00mil 3420.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[3295.00mil 4020.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3225.00mil 4010.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2735.00mil 3810.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S)"]
+Via[2735.00mil 3870.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S)"]
+Via[2740.00mil 3570.00mil 36.00mil 20.00mil 0.0000 20.00mil "" "thermal(1S)"]
+Via[57.4000mm 78.6000mm 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[62.1000mm 78.6000mm 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[62.1980mm 69.9160mm 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[75.5910mm 68.7810mm 60.00mil 20.00mil 0.0000 35.00mil "GND" "thermal(1X)"]
+Via[104.8000mm 66.3000mm 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[104.8000mm 65.0000mm 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[105.4000mm 71.6000mm 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[105.8300mm 70.3300mm 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[100.6440mm 99.9830mm 36.00mil 20.00mil 0.0000 20.00mil "" "thermal(0S,1S)"]
+Via[3918.00mil 2563.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3918.00mil 2767.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3918.00mil 2977.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3920.00mil 2710.00mil 36.00mil 20.00mil 0.0000 20.00mil "" "thermal(1X)"]
+Via[3920.00mil 2918.00mil 36.00mil 20.00mil 0.0000 20.00mil "" "thermal(1X)"]
+Via[3919.00mil 3128.00mil 36.00mil 20.00mil 0.0000 20.00mil "" "thermal(1X)"]
+Via[3967.00mil 2954.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3096.00mil 2656.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(1X)"]
+Via[3050.00mil 2716.00mil 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(1X)"]
+Via[3098.00mil 2514.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[68.6048mm 76.6388mm 60.00mil 20.00mil 0.0000 35.00mil "" "thermal(0S,1S)"]
+Via[3585.00mil 2600.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+
+Element["lock" "M2.5 bolt" "" "" 97.5000mm 60.5000mm 0.0000 0.0000 0 100 ""]
+(
+ Pin[0.0000 0.0000 6.0000mm 20.00mil 6.2500mm 2.7000mm "1" "1" "lock"]
+
+ )
+
+Element["lock" "M2.5 bolt" "" "" 97.5000mm 109.5000mm 0.0000 0.0000 0 100 ""]
+(
+ Pin[0.0000 0.0000 6.0000mm 20.00mil 6.2500mm 2.7000mm "1" "1" "lock"]
+
+ )
+
+Element["lock" "M2.5 bolt" "" "" 39.5000mm 60.5000mm 0.0000 0.0000 0 100 ""]
+(
+ Pin[0.0000 0.0000 6.0000mm 20.00mil 6.2500mm 2.7000mm "1" "1" "lock"]
+
+ )
+
+Element["lock" "M2.5 bolt" "" "" 39.5000mm 109.5000mm 0.0000 0.0000 0 100 ""]
+(
+ Pin[0.0000 0.0000 6.0000mm 20.00mil 6.2500mm 2.7000mm "1" "1" "lock"]
+
+ )
+
+Element["onsolder" "0805" "C202" "10nF_10%" 57.4600mm 93.3312mm -2.8679mm -0.7725mm 2 100 "onsolder"]
+(
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "onsolder,square"]
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "onsolder,square"]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+
+ )
+
+Element["" "TO263-7" "U200" "unknown" 2360.00mil 91.3194mm -68.00mil -597.00mil 0 100 ""]
+(
+ Pad[-150.00mil 58.25mil -150.00mil 107.25mil 36.00mil 20.00mil 44.00mil "SW" "1" "square,edge2"]
+ Pad[-100.00mil 58.25mil -100.00mil 107.25mil 36.00mil 20.00mil 44.00mil "VIN" "2" "square,edge2"]
+ Pad[-50.00mil 58.25mil -50.00mil 107.25mil 36.00mil 20.00mil 44.00mil "CB" "3" "square,edge2"]
+ Pad[0.0000 58.25mil 0.0000 107.25mil 36.00mil 20.00mil 44.00mil "GND" "4" "square,edge2"]
+ Pad[50.00mil 58.25mil 50.00mil 107.25mil 36.00mil 20.00mil 44.00mil "NC" "5" "square,edge2"]
+ Pad[100.00mil 58.25mil 100.00mil 107.25mil 36.00mil 20.00mil 44.00mil "FB" "6" "square,edge2"]
+ Pad[150.00mil 58.25mil 150.00mil 107.25mil 36.00mil 20.00mil 44.00mil "EN" "7" "square,edge2"]
+ Pad[-7.50mil -245.25mil 7.50mil -245.25mil 410.00mil 20.00mil 418.00mil "GND" "8" "square"]
+ ElementLine [-227.50mil 140.25mil 227.50mil 140.25mil 10.00mil]
+ ElementLine [-227.50mil 140.25mil -227.50mil -465.25mil 10.00mil]
+ ElementLine [227.50mil 140.25mil 227.50mil -465.25mil 10.00mil]
+ ElementLine [-227.50mil -465.25mil 227.50mil -465.25mil 10.00mil]
+
+ )
+
+Element["" "CAP8" "C200" "68uF_25V" 53.9840mm 100.1270mm -1.2030mm 4.7840mm 0 100 ""]
+(
+ Pin[1.7500mm 0.0000 1.6000mm 20.00mil 2.0000mm 0.9000mm "+" "1" "thermal(0S)"]
+ Pin[-1.7500mm 0.0000 1.6000mm 20.00mil 2.0000mm 0.9000mm "-" "2" "thermal(1S)"]
+ ElementLine [3.0000mm 0.0000 3.7500mm 0.0000 8.00mil]
+ ElementLine [3.3750mm -0.3750mm 3.3750mm 0.3750mm 8.00mil]
+ ElementArc [0.0000 0.0000 4.2500mm 4.2500mm 90.000000 360.000000 8.00mil]
+
+ )
+
+Element["" "SO8" "Q100" "Si4842BDY" 75.7030mm 92.0625mm -170.00mil 40.00mil 1 100 ""]
+(
+ Pad[-75.00mil 70.00mil -75.00mil 135.00mil 20.00mil 10.00mil 30.00mil "1" "1" "square,edge2"]
+ Pad[-25.00mil 70.00mil -25.00mil 135.00mil 20.00mil 10.00mil 30.00mil "2" "2" "square,edge2"]
+ Pad[25.00mil 70.00mil 25.00mil 135.00mil 20.00mil 10.00mil 30.00mil "3" "3" "square,edge2"]
+ Pad[75.00mil 70.00mil 75.00mil 135.00mil 20.00mil 10.00mil 30.00mil "4" "4" "square,edge2"]
+ Pad[75.00mil -135.00mil 75.00mil -70.00mil 20.00mil 10.00mil 30.00mil "5" "5" "square"]
+ Pad[25.00mil -135.00mil 25.00mil -70.00mil 20.00mil 10.00mil 30.00mil "6" "6" "square"]
+ Pad[-25.00mil -135.00mil -25.00mil -70.00mil 20.00mil 10.00mil 30.00mil "7" "7" "square"]
+ Pad[-75.00mil -135.00mil -75.00mil -70.00mil 20.00mil 10.00mil 30.00mil "8" "8" "square"]
+ ElementLine [-95.00mil 155.00mil 95.00mil 155.00mil 10.00mil]
+ ElementLine [95.00mil -155.00mil 95.00mil 155.00mil 10.00mil]
+ ElementLine [-95.00mil -155.00mil 95.00mil -155.00mil 10.00mil]
+ ElementLine [-95.00mil 25.00mil -95.00mil 155.00mil 10.00mil]
+ ElementLine [-95.00mil -155.00mil -95.00mil -25.00mil 10.00mil]
+ ElementArc [-95.00mil 0.0000 25.00mil 25.00mil 90.000000 180.000000 10.00mil]
+
+ )
+
+Element["" "0805" "C101" "4.7uF_10%" 3135.00mil 3960.00mil -116.50mil -96.50mil 0 100 ""]
+(
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+
+ )
+
+Element["" "CAP8" "C108" "68uF_25V" 2670.00mil 4015.00mil -1.5640mm 4.6580mm 0 100 ""]
+(
+ Pin[0.0000 -1.7500mm 1.6000mm 20.00mil 2.0000mm 0.9000mm "+" "1" "thermal(0S)"]
+ Pin[0.0000 1.7500mm 1.6000mm 20.00mil 2.0000mm 0.9000mm "-" "2" "thermal(1S)"]
+ ElementLine [0.0000 -3.7500mm 0.0000 -3.0000mm 8.00mil]
+ ElementLine [-0.3750mm -3.3750mm 0.3750mm -3.3750mm 8.00mil]
+ ElementArc [0.0000 0.0000 4.2500mm 4.2500mm 180.000000 360.000000 8.00mil]
+
+ )
+
+Element["" "0805" "C106" "0.1uF_10%" 2740.00mil 93.0692mm -101.50mil 1.2247mm 1 100 ""]
+(
+ Pad[-3.93mil -35.43mil 3.93mil -35.43mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-3.93mil 35.43mil 3.93mil 35.43mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [27.55mil -3.93mil 27.55mil 3.93mil 8.00mil]
+ ElementLine [-27.55mil -3.93mil -27.55mil 3.93mil 8.00mil]
+
+ )
+
+Element["" "CAP8" "C204" "330uF_16V" 44.1060mm 73.8440mm -6.4186mm 3.3074mm 0 100 ""]
+(
+ Pin[1.7500mm 0.0000 1.6000mm 20.00mil 2.0000mm 0.9000mm "+" "1" "thermal(0X)"]
+ Pin[-1.7500mm 0.0000 1.6000mm 20.00mil 2.0000mm 0.9000mm "-" "2" "thermal(1S)"]
+ ElementLine [3.0000mm 0.0000 3.7500mm 0.0000 8.00mil]
+ ElementLine [3.3750mm -0.3750mm 3.3750mm 0.3750mm 8.00mil]
+ ElementArc [0.0000 0.0000 4.2500mm 4.2500mm 90.000000 360.000000 8.00mil]
+
+ )
+
+Element["" "0805" "C203" "0.1uF_10%" 1965.00mil 3065.00mil -51.50mil -96.50mil 0 100 ""]
+(
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+
+ )
+
+Element["" "0805" "R100" "26.1k_1%" 3800.00mil 3950.00mil -51.50mil 43.50mil 0 100 ""]
+(
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+
+ )
+
+Element["" "1206" "R106" "10_mOhm" 75.0600mm 98.8659mm -111.50mil 46.50mil 1 100 ""]
+(
+ Pad[-11.81mil 59.05mil 11.81mil 59.05mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-11.81mil -59.05mil 11.81mil -59.05mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-37.40mil -23.62mil -37.40mil 23.62mil 8.00mil]
+ ElementLine [37.40mil -23.62mil 37.40mil 23.62mil 8.00mil]
+
+ )
+
+Element["" "0805" "C105" "4.7uF_10%" 82.6988mm 3740.00mil -86.50mil -101.50mil 0 100 ""]
+(
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+
+ )
+
+Element["" "DO214AC" "D101" "5.6V" 3730.00mil 3760.00mil 59.00mil 122.00mil 1 100 ""]
+(
+ Pad[0.0000 78.50mil 0.0000 78.50mil 99.00mil 20.00mil 79.00mil "2" "2" "square"]
+ Pad[0.0000 -78.50mil 0.0000 -78.50mil 99.00mil 20.00mil 79.00mil "1" "1" "square"]
+ ElementLine [-50.00mil 24.00mil 50.00mil 24.00mil 10.00mil]
+
+ )
+
+Element["" "0805" "R102" "10.0k_1%" 3550.00mil 4020.00mil -61.50mil 328.50mil 0 100 ""]
+(
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+
+ )
+
+Element["" "0805" "C102" "10nF_10%" 3550.00mil 3925.00mil -56.50mil 358.50mil 0 100 ""]
+(
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+
+ )
+
+Element["" "0805" "C104" "6.8nF_10%" 3550.00mil 3735.00mil -56.50mil 418.50mil 0 100 ""]
+(
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+
+ )
+
+Element["" "0805" "C103" "22pF_5%" 3550.00mil 3830.00mil -56.50mil 388.50mil 0 100 ""]
+(
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+
+ )
+
+Element["" "0805" "R101" "71.5k_1%" 3135.00mil 4055.00mil 3.50mil 48.50mil 0 100 ""]
+(
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+
+ )
+
+Element["onsolder" "0805" "C201" "0.1uF_10%" 60.1420mm 98.0320mm 51.50mil 48.50mil 2 100 "onsolder"]
+(
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "onsolder,square"]
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "onsolder,square"]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+
+ )
+
+Element["" "SPM12565XT" "L200" "13uH" 1790.00mil 3435.00mil -85.00mil 325.00mil 0 100 ""]
+(
+ Pad[0.0000 3.6500mm 0.0000 6.0500mm 2.8000mm 20.00mil 3.0000mm "1" "1" "square,edge2"]
+ Pad[0.0000 -6.0500mm 0.0000 -3.6500mm 2.8000mm 20.00mil 3.0000mm "2" "2" "square"]
+ ElementLine [-4.6000mm 7.8500mm 6.6000mm 7.8500mm 10.00mil]
+ ElementLine [-6.6000mm -7.8500mm 6.6000mm -7.8500mm 10.00mil]
+ ElementLine [6.6000mm -7.8500mm 6.6000mm 7.8500mm 10.00mil]
+ ElementLine [-6.6000mm -7.8500mm -6.6000mm 5.8500mm 10.00mil]
+ ElementLine [-4.6000mm 7.8500mm -6.6000mm 5.8500mm 10.00mil]
+
+ )
+
+Element["onsolder" "0805" "C107" "4.7uF_10%" 2785.00mil 4010.00mil 66.50mil 48.50mil 2 100 "onsolder"]
+(
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "onsolder,square"]
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "onsolder,square"]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+
+ )
+
+Element["" "CAP8" "C109" "68uF_25V" 75.1710mm 107.4730mm 4.8520mm -1.0780mm 0 100 ""]
+(
+ Pin[0.0000 -1.7500mm 1.6000mm 20.00mil 2.0000mm 0.9000mm "+" "1" "thermal(0S)"]
+ Pin[0.0000 1.7500mm 1.6000mm 20.00mil 2.0000mm 0.9000mm "-" "2" "thermal(1S)"]
+ ElementLine [0.0000 -3.7500mm 0.0000 -3.0000mm 8.00mil]
+ ElementLine [-0.3750mm -3.3750mm 0.3750mm -3.3750mm 8.00mil]
+ ElementArc [0.0000 0.0000 4.2500mm 4.2500mm 180.000000 360.000000 8.00mil]
+
+ )
+
+Element["" "0805" "R104" "10.0k_1%" 3340.00mil 3960.00mil -6.50mil 39.50mil 0 100 ""]
+(
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+
+ )
+
+Element["" "0805" "R105" "80.6k_1%" 86.4761mm 93.8421mm -2.5563mm -0.1941mm 1 100 ""]
+(
+ Pad[-3.93mil -35.43mil 3.93mil -35.43mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-3.93mil 35.43mil 3.93mil 35.43mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [27.55mil -3.93mil 27.55mil 3.93mil 8.00mil]
+ ElementLine [-27.55mil -3.93mil -27.55mil 3.93mil 8.00mil]
+
+ )
+
+Element["" "0805" "R103" "22.0k_1%" 3548.50mil 3640.00mil -56.50mil 448.50mil 0 100 ""]
+(
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+
+ )
+
+Element["" "0805" "R200" "10.0k_1%" 61.3301mm 3845.00mil -1.7943mm 38.50mil 0 100 ""]
+(
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+
+ )
+
+Element["" "0805" "D202" "unknown" 60.3359mm 70.7499mm -96.50mil 66.50mil 1 100 ""]
+(
+ Pad[-3.93mil 35.43mil 3.93mil 35.43mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-3.93mil -35.43mil 3.93mil -35.43mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-27.55mil -3.93mil -27.55mil 3.93mil 8.00mil]
+ ElementLine [27.55mil -3.93mil 27.55mil 3.93mil 8.00mil]
+
+ )
+
+Element["" "Pad80d40" "TP102" "unknown" 1595.00mil 4040.00mil -80.00mil -125.00mil 0 100 ""]
+(
+ Pin[0.0000 0.0000 80.00mil 20.00mil 86.00mil 40.00mil "1" "1" ""]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 90.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 180.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 270.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 0.000000 90.000000 6.00mil]
+
+ )
+
+Element["" "Pad80d40" "TP101" "unknown" 1795.00mil 4040.00mil -65.00mil -125.00mil 0 100 ""]
+(
+ Pin[0.0000 0.0000 80.00mil 20.00mil 86.00mil 40.00mil "1" "1" "thermal(7)"]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 90.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 180.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 270.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 0.000000 90.000000 6.00mil]
+
+ )
+
+Element["" "0805" "R201" "499R_1%" 51.6999mm 2825.00mil -1.5839mm 38.50mil 0 100 ""]
+(
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+
+ )
+
+Element["" "Pad80d40" "TP202" "unknown" 41.9000mm 68.0000mm -110.00mil -115.00mil 0 100 ""]
+(
+ Pin[0.0000 0.0000 80.00mil 20.00mil 86.00mil 40.00mil "1" "1" "thermal(0S,1S)"]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 90.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 180.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 270.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 0.000000 90.000000 6.00mil]
+
+ )
+
+Element["" "Pad80d40" "TP201" "unknown" 1880.00mil 2680.00mil -10.00mil 50.00mil 0 100 ""]
+(
+ Pin[0.0000 0.0000 80.00mil 20.00mil 86.00mil 40.00mil "1" "1" ""]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 90.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 180.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 270.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 0.000000 90.000000 6.00mil]
+
+ )
+
+Element["onsolder,lock" "TO252AE" "D201" "V35PW60-M3/I" 59.8000mm 85.0314mm 3.9364mm -1.2030mm 1 100 "onsolder"]
+(
+ Pad[-90.00mil -132.00mil -90.00mil -112.00mil 55.00mil 20.00mil 52.00mil "1" "1" "onsolder,square,lock"]
+ Pad[90.00mil -132.00mil 90.00mil -112.00mil 55.00mil 20.00mil 52.00mil "3" "3" "onsolder,square,lock"]
+ Pad[-2.50mil 109.00mil 2.50mil 109.00mil 235.00mil 20.00mil 220.00mil "4" "4" "onsolder,square,lock"]
+ ElementLine [140.00mil -174.50mil 140.00mil 241.50mil 10.00mil]
+ ElementLine [140.00mil 241.50mil -140.00mil 241.50mil 10.00mil]
+ ElementLine [-140.00mil 241.50mil -140.00mil -174.50mil 10.00mil]
+ ElementLine [-140.00mil -174.50mil 140.00mil -174.50mil 10.00mil]
+
+ )
+
+Element["onsolder" "TO252AE" "D103" "V35PW60-M3/I" 75.1000mm 92.5000mm 3.9516mm -0.5090mm 1 100 "onsolder"]
+(
+ Pad[-90.00mil -132.00mil -90.00mil -112.00mil 55.00mil 20.00mil 52.00mil "1" "1" "onsolder,square"]
+ Pad[90.00mil -132.00mil 90.00mil -112.00mil 55.00mil 20.00mil 52.00mil "3" "3" "onsolder,square"]
+ Pad[-2.50mil 109.00mil 2.50mil 109.00mil 235.00mil 20.00mil 220.00mil "4" "4" "onsolder,square"]
+ ElementLine [140.00mil -174.50mil 140.00mil 241.50mil 10.00mil]
+ ElementLine [140.00mil 241.50mil -140.00mil 241.50mil 10.00mil]
+ ElementLine [-140.00mil 241.50mil -140.00mil -174.50mil 10.00mil]
+ ElementLine [-140.00mil -174.50mil 140.00mil -174.50mil 10.00mil]
+
+ )
+
+Element["" "SPM12565XT" "L100" "2.8uH" 87.9700mm 3300.00mil -455.00mil -205.00mil 0 100 ""]
+(
+ Pad[3.6500mm 0.0000 6.0500mm 0.0000 2.8000mm 20.00mil 3.0000mm "1" "1" "square,edge2"]
+ Pad[-6.0500mm 0.0000 -3.6500mm 0.0000 2.8000mm 20.00mil 3.0000mm "2" "2" "square"]
+ ElementLine [7.8500mm -6.6000mm 7.8500mm 4.6000mm 10.00mil]
+ ElementLine [-7.8500mm -6.6000mm -7.8500mm 6.6000mm 10.00mil]
+ ElementLine [-7.8500mm -6.6000mm 7.8500mm -6.6000mm 10.00mil]
+ ElementLine [-7.8500mm 6.6000mm 5.8500mm 6.6000mm 10.00mil]
+ ElementLine [7.8500mm 4.6000mm 5.8500mm 6.6000mm 10.00mil]
+
+ )
+
+Element["found" "1206" "C404" "22uF" 82.1976mm 67.7000mm -66.00mil -113.00mil 0 91 ""]
+(
+ Pad[-60.00mil -12.00mil -60.00mil 13.00mil 45.00mil 30.00mil 51.00mil "1" "1" "square"]
+ Pad[60.00mil -12.00mil 60.00mil 13.00mil 45.00mil 30.00mil 51.00mil "2" "2" "square"]
+ ElementLine [-95.00mil -47.00mil 95.00mil -47.00mil 5.00mil]
+ ElementLine [95.00mil -47.00mil 95.00mil 49.00mil 5.00mil]
+ ElementLine [95.00mil 49.00mil -95.00mil 49.00mil 5.00mil]
+ ElementLine [-95.00mil 49.00mil -95.00mil -47.00mil 5.00mil]
+
+ )
+
+Element["found" "1206" "C405" "22uF" 75.4976mm 72.4000mm -3.0402mm 0.9452mm 1 91 ""]
+(
+ Pad[-13.00mil -60.00mil 12.00mil -60.00mil 45.00mil 30.00mil 51.00mil "1" "1" "square,edge2"]
+ Pad[-13.00mil 60.00mil 12.00mil 60.00mil 45.00mil 30.00mil 51.00mil "2" "2" "square,edge2"]
+ ElementLine [47.00mil -95.00mil 47.00mil 95.00mil 5.00mil]
+ ElementLine [-49.00mil 95.00mil 47.00mil 95.00mil 5.00mil]
+ ElementLine [-49.00mil -95.00mil -49.00mil 95.00mil 5.00mil]
+ ElementLine [-49.00mil -95.00mil 47.00mil -95.00mil 5.00mil]
+
+ )
+
+Element["lock" "0430451400" "J401" "unknown" 112.1310mm 63.4630mm 3.5512mm 22.0578mm 0 100 ""]
+(
+ Attribute("description" "Connector, Molex, Micro-Fit 43045, 14 pins")
+ Pin[0.0000 0.0000 62.00mil 20.00mil 72.00mil 1.0200mm "1" "1" "square,lock"]
+ Pin[0.0000 3.0000mm 62.00mil 20.00mil 72.00mil 1.0200mm "3" "2" "lock"]
+ Pin[0.0000 6.0000mm 62.00mil 20.00mil 72.00mil 1.0200mm "5" "3" "lock"]
+ Pin[0.0000 9.0000mm 62.00mil 20.00mil 72.00mil 1.0200mm "7" "4" "lock"]
+ Pin[0.0000 12.0000mm 62.00mil 20.00mil 72.00mil 1.0200mm "9" "5" "lock"]
+ Pin[0.0000 15.0000mm 62.00mil 20.00mil 72.00mil 1.0200mm "11" "6" "lock"]
+ Pin[0.0000 18.0000mm 62.00mil 20.00mil 72.00mil 1.0200mm "13" "7" "lock"]
+ Pin[-3.0000mm 0.0000 62.00mil 20.00mil 72.00mil 1.0200mm "2" "8" "lock,thermal(1X)"]
+ Pin[-3.0000mm 3.0000mm 62.00mil 20.00mil 72.00mil 1.0200mm "4" "9" "lock,thermal(1X)"]
+ Pin[-3.0000mm 6.0000mm 62.00mil 20.00mil 72.00mil 1.0200mm "6" "10" "lock"]
+ Pin[-3.0000mm 9.0000mm 62.00mil 20.00mil 72.00mil 1.0200mm "8" "11" "lock"]
+ Pin[-3.0000mm 12.0000mm 62.00mil 20.00mil 72.00mil 1.0200mm "10" "12" "lock"]
+ Pin[-3.0000mm 15.0000mm 62.00mil 20.00mil 72.00mil 1.0200mm "12" "13" "lock"]
+ Pin[-3.0000mm 18.0000mm 62.00mil 20.00mil 72.00mil 1.0200mm "14" "14" "lock"]
+ Pin[4.3200mm 2.1400mm 2.4100mm 20.00mil 3.0000mm 3.0000mm "" "" "hole,lock"]
+ Pin[4.3200mm 15.8400mm 2.4100mm 20.00mil 3.0000mm 3.0000mm "" "" "hole,lock"]
+ ElementLine [0.0000 -3.8290mm -25.00mil -5.3530mm 10.00mil]
+ ElementLine [-25.00mil -5.3530mm 25.00mil -5.3530mm 10.00mil]
+ ElementLine [25.00mil -5.3530mm 0.0000 -3.8290mm 10.00mil]
+ ElementLine [-3.3200mm 21.5750mm 8.9200mm 21.5750mm 10.00mil]
+ ElementLine [8.9200mm -3.5750mm 8.9200mm 21.5750mm 10.00mil]
+ ElementLine [-3.3200mm -3.5750mm 8.9200mm -3.5750mm 10.00mil]
+ ElementLine [-3.3200mm -3.5750mm -3.3200mm -40.61mil 10.00mil]
+ ElementLine [-3.3200mm 40.61mil -3.3200mm 77.50mil 10.00mil]
+ ElementLine [-3.3200mm 4.0315mm -3.3200mm 4.9685mm 10.00mil]
+ ElementLine [-3.3200mm 7.0315mm -3.3200mm 7.9685mm 10.00mil]
+ ElementLine [-3.3200mm 10.0315mm -3.3200mm 10.9685mm 10.00mil]
+ ElementLine [-3.3200mm 13.0315mm -3.3200mm 13.9685mm 10.00mil]
+ ElementLine [-3.3200mm 16.0315mm -3.3200mm 16.9684mm 10.00mil]
+ ElementLine [-3.3200mm 19.0315mm -3.3200mm 21.5750mm 10.00mil]
+
+ )
+
+Element["onsolder" "0805" "C402" "0.1uF_10%" 97.5965mm 66.8350mm -47.50mil 61.50mil 3 100 "onsolder"]
+(
+ Pad[-3.93mil 35.43mil 3.93mil 35.43mil 51.18mil 20.00mil 57.18mil "1" "1" "onsolder,square"]
+ Pad[-3.93mil -35.43mil 3.93mil -35.43mil 51.18mil 20.00mil 57.18mil "2" "2" "onsolder,square"]
+ ElementLine [27.55mil -3.93mil 27.55mil 3.93mil 8.00mil]
+ ElementLine [-27.55mil -3.93mil -27.55mil 3.93mil 8.00mil]
+
+ )
+
+Element["onsolder" "0805" "C401" "0.1uF_10%" 97.8965mm 72.2350mm -48.50mil 60.50mil 3 100 "onsolder"]
+(
+ Pad[-3.93mil 35.43mil 3.93mil 35.43mil 51.18mil 20.00mil 57.18mil "1" "1" "onsolder,square"]
+ Pad[-3.93mil -35.43mil 3.93mil -35.43mil 51.18mil 20.00mil 57.18mil "2" "2" "onsolder,square"]
+ ElementLine [27.55mil -3.93mil 27.55mil 3.93mil 8.00mil]
+ ElementLine [-27.55mil -3.93mil -27.55mil 3.93mil 8.00mil]
+
+ )
+
+Element["onsolder" "0805" "C403" "0.1uF_10%" 97.5965mm 77.5350mm 113.50mil 86.50mil 3 100 "onsolder"]
+(
+ Pad[-3.93mil 35.43mil 3.93mil 35.43mil 51.18mil 20.00mil 57.18mil "1" "1" "onsolder,square"]
+ Pad[-3.93mil -35.43mil 3.93mil -35.43mil 51.18mil 20.00mil 57.18mil "2" "2" "onsolder,square"]
+ ElementLine [27.55mil -3.93mil 27.55mil 3.93mil 8.00mil]
+ ElementLine [-27.55mil -3.93mil -27.55mil 3.93mil 8.00mil]
+
+ )
+
+Element["onsolder" "0805" "R401" "120R" 103.2000mm 65.6000mm -46.50mil 62.50mil 3 100 "onsolder"]
+(
+ Pad[-3.93mil 35.43mil 3.93mil 35.43mil 51.18mil 20.00mil 57.18mil "1" "1" "onsolder,square"]
+ Pad[-3.93mil -35.43mil 3.93mil -35.43mil 51.18mil 20.00mil 57.18mil "2" "2" "onsolder,square"]
+ ElementLine [27.55mil -3.93mil 27.55mil 3.93mil 8.00mil]
+ ElementLine [-27.55mil -3.93mil -27.55mil 3.93mil 8.00mil]
+
+ )
+
+Element["onsolder" "0805" "R402" "120R" 103.2000mm 70.9001mm -50.50mil 58.50mil 3 100 "onsolder"]
+(
+ Pad[-3.93mil 35.43mil 3.93mil 35.43mil 51.18mil 20.00mil 57.18mil "1" "1" "onsolder,square"]
+ Pad[-3.93mil -35.43mil 3.93mil -35.43mil 51.18mil 20.00mil 57.18mil "2" "2" "onsolder,square"]
+ ElementLine [27.55mil -3.93mil 27.55mil 3.93mil 8.00mil]
+ ElementLine [-27.55mil -3.93mil -27.55mil 3.93mil 8.00mil]
+
+ )
+
+Element["" "SO8" "U403" "unknown" 100.2965mm 77.5350mm -66.00mil 116.00mil 0 100 ""]
+(
+ Pad[-135.00mil -75.00mil -70.00mil -75.00mil 20.00mil 10.00mil 30.00mil "VCC" "1" "square"]
+ Pad[-135.00mil -25.00mil -70.00mil -25.00mil 20.00mil 10.00mil 30.00mil "RO" "2" "square"]
+ Pad[-135.00mil 25.00mil -70.00mil 25.00mil 20.00mil 10.00mil 30.00mil "DI" "3" "square"]
+ Pad[-135.00mil 75.00mil -70.00mil 75.00mil 20.00mil 10.00mil 30.00mil "GND" "4" "square"]
+ Pad[70.00mil 75.00mil 135.00mil 75.00mil 20.00mil 10.00mil 30.00mil "Y" "5" "square,edge2"]
+ Pad[70.00mil 25.00mil 135.00mil 25.00mil 20.00mil 10.00mil 30.00mil "Zn" "6" "square,edge2"]
+ Pad[70.00mil -25.00mil 135.00mil -25.00mil 20.00mil 10.00mil 30.00mil "Bn" "7" "square,edge2"]
+ Pad[70.00mil -75.00mil 135.00mil -75.00mil 20.00mil 10.00mil 30.00mil "A" "8" "square,edge2"]
+ ElementLine [-155.00mil -95.00mil -155.00mil 95.00mil 10.00mil]
+ ElementLine [-155.00mil 95.00mil 155.00mil 95.00mil 10.00mil]
+ ElementLine [155.00mil 95.00mil 155.00mil -95.00mil 10.00mil]
+ ElementLine [-155.00mil -95.00mil -25.00mil -95.00mil 10.00mil]
+ ElementLine [155.00mil -95.00mil 25.00mil -95.00mil 10.00mil]
+ ElementArc [0.0000 -95.00mil 25.00mil 25.00mil 0.000000 180.000000 10.00mil]
+
+ )
+
+Element["" "SO8" "U402" "unknown" 100.3340mm 72.1860mm -317.00mil -19.00mil 0 100 ""]
+(
+ Pad[-135.00mil -75.00mil -70.00mil -75.00mil 20.00mil 10.00mil 30.00mil "VCC" "1" "square"]
+ Pad[-135.00mil -25.00mil -70.00mil -25.00mil 20.00mil 10.00mil 30.00mil "RO" "2" "square"]
+ Pad[-135.00mil 25.00mil -70.00mil 25.00mil 20.00mil 10.00mil 30.00mil "DI" "3" "square"]
+ Pad[-135.00mil 75.00mil -70.00mil 75.00mil 20.00mil 10.00mil 30.00mil "GND" "4" "square"]
+ Pad[70.00mil 75.00mil 135.00mil 75.00mil 20.00mil 10.00mil 30.00mil "Y" "5" "square,edge2"]
+ Pad[70.00mil 25.00mil 135.00mil 25.00mil 20.00mil 10.00mil 30.00mil "Zn" "6" "square,edge2"]
+ Pad[70.00mil -25.00mil 135.00mil -25.00mil 20.00mil 10.00mil 30.00mil "Bn" "7" "square,edge2"]
+ Pad[70.00mil -75.00mil 135.00mil -75.00mil 20.00mil 10.00mil 30.00mil "A" "8" "square,edge2"]
+ ElementLine [-155.00mil -95.00mil -155.00mil 95.00mil 10.00mil]
+ ElementLine [-155.00mil 95.00mil 155.00mil 95.00mil 10.00mil]
+ ElementLine [155.00mil 95.00mil 155.00mil -95.00mil 10.00mil]
+ ElementLine [-155.00mil -95.00mil -25.00mil -95.00mil 10.00mil]
+ ElementLine [155.00mil -95.00mil 25.00mil -95.00mil 10.00mil]
+ ElementArc [0.0000 -95.00mil 25.00mil 25.00mil 0.000000 180.000000 10.00mil]
+
+ )
+
+Element["" "Pad80d40" "TP100" "unknown" 100.2630mm 96.8080mm -3.5950mm -2.8890mm 0 100 ""]
+(
+ Pin[0.0000 0.0000 80.00mil 20.00mil 86.00mil 40.00mil "1" "1" ""]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 90.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 180.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 270.000000 90.000000 6.00mil]
+ ElementArc [0.0000 0.0000 50.00mil 50.00mil 0.000000 90.000000 6.00mil]
+
+ )
+
+Element["" "TO252AE" "D102" "V35PW60-M3/I" 111.2746mm 108.5060mm -3.8968mm -5.5794mm 0 100 ""]
+(
+ Pad[112.00mil 90.00mil 132.00mil 90.00mil 55.00mil 20.00mil 52.00mil "1" "1" "square,edge2"]
+ Pad[112.00mil -90.00mil 132.00mil -90.00mil 55.00mil 20.00mil 52.00mil "3" "3" "square,edge2"]
+ Pad[-109.00mil -2.50mil -109.00mil 2.50mil 235.00mil 20.00mil 220.00mil "4" "4" "square"]
+ ElementLine [-241.50mil -140.00mil 174.50mil -140.00mil 10.00mil]
+ ElementLine [-241.50mil -140.00mil -241.50mil 140.00mil 10.00mil]
+ ElementLine [-241.50mil 140.00mil 174.50mil 140.00mil 10.00mil]
+ ElementLine [174.50mil -140.00mil 174.50mil 140.00mil 10.00mil]
+
+ )
+
+Element["" "0805" "C110" "6.8nF_10%" 102.9300mm 99.9830mm -41.50mil 38.50mil 0 100 ""]
+(
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+
+ )
+
+Element["" "CAP8" "C100" "68uF_25V" 103.4380mm 90.9660mm -195.00mil -205.00mil 0 100 ""]
+(
+ Pin[0.0000 -1.7500mm 1.6000mm 20.00mil 2.0000mm 0.9000mm "+" "1" ""]
+ Pin[0.0000 1.7500mm 1.6000mm 20.00mil 2.0000mm 0.9000mm "-" "2" "thermal(1S)"]
+ ElementLine [0.0000 -3.7500mm 0.0000 -3.0000mm 8.00mil]
+ ElementLine [-0.3750mm -3.3750mm 0.3750mm -3.3750mm 8.00mil]
+ ElementArc [0.0000 0.0000 4.2500mm 4.2500mm 180.000000 360.000000 8.00mil]
+
+ )
+
+Element["onsolder" "DO214AB" "D100" "16V" 109.8134mm 102.0150mm 59.00mil 137.00mil 2 100 "onsolder"]
+(
+ Pad[-109.00mil -20.00mil -109.00mil 20.00mil 145.00mil 20.00mil 151.00mil "1" "1" "onsolder,square"]
+ Pad[109.00mil -20.00mil 109.00mil 20.00mil 145.00mil 20.00mil 151.00mil "2" "2" "onsolder,square"]
+ ElementLine [-217.00mil 92.00mil -217.00mil -92.00mil 20.00mil]
+ ElementLine [-217.00mil -92.00mil -145.00mil -118.00mil 10.00mil]
+ ElementLine [-145.00mil -118.00mil 207.00mil -118.00mil 10.00mil]
+ ElementLine [207.00mil 118.00mil 207.00mil -118.00mil 10.00mil]
+ ElementLine [-145.00mil 118.00mil 207.00mil 118.00mil 10.00mil]
+ ElementLine [-145.00mil 118.00mil -217.00mil 92.00mil 10.00mil]
+
+ )
+
+Element["" "HEADER40_2" "J200" "unknown" 1747.00mil 2432.00mil 890.00mil 70.00mil 0 100 ""]
+(
+ Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "1" "1" "square,edge2"]
+ Pin[0.0000 -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "2" "2" "edge2,thermal(0S,1S)"]
+ Pin[100.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "3" "3" "edge2"]
+ Pin[100.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "4" "4" "edge2,thermal(0S,1S)"]
+ Pin[200.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "5" "5" "edge2"]
+ Pin[200.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "6" "6" "edge2"]
+ Pin[300.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "7" "7" "edge2"]
+ Pin[300.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "8" "8" "edge2"]
+ Pin[400.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "9" "9" "edge2,thermal(0S,1S)"]
+ Pin[400.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "10" "10" "edge2"]
+ Pin[500.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "11" "11" "edge2"]
+ Pin[500.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "12" "12" "edge2"]
+ Pin[600.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "13" "13" "edge2"]
+ Pin[600.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "14" "14" "edge2,thermal(0X,1S)"]
+ Pin[700.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "15" "15" "edge2"]
+ Pin[700.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "16" "16" "edge2"]
+ Pin[800.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "17" "17" "edge2"]
+ Pin[800.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "18" "18" "edge2"]
+ Pin[900.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "19" "19" "edge2"]
+ Pin[900.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "20" "20" "edge2,thermal(0X,1S)"]
+ Pin[1000.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "21" "21" "edge2"]
+ Pin[1000.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "22" "22" "edge2"]
+ Pin[1100.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "23" "23" "edge2"]
+ Pin[1100.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "24" "24" "edge2"]
+ Pin[1200.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "25" "25" "edge2,thermal(0X,1S)"]
+ Pin[1200.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "26" "26" "edge2"]
+ Pin[1300.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "27" "27" "edge2"]
+ Pin[1300.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "28" "28" "edge2"]
+ Pin[1400.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "29" "29" "edge2"]
+ Pin[1400.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "30" "30" "edge2"]
+ Pin[1500.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "31" "31" "edge2"]
+ Pin[1500.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "32" "32" "edge2"]
+ Pin[1600.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "33" "33" "edge2"]
+ Pin[1600.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "34" "34" "edge2,thermal(1)"]
+ Pin[1700.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "35" "35" "edge2"]
+ Pin[1700.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "36" "36" "edge2"]
+ Pin[1800.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "37" "37" "edge2"]
+ Pin[1800.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "38" "38" "edge2"]
+ Pin[1900.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "39" "39" "edge2,thermal(1)"]
+ Pin[1900.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "40" "40" "edge2"]
+ ElementLine [-50.00mil 50.00mil 1950.00mil 50.00mil 10.00mil]
+ ElementLine [1950.00mil -150.00mil 1950.00mil 50.00mil 10.00mil]
+ ElementLine [-50.00mil -150.00mil 1950.00mil -150.00mil 10.00mil]
+ ElementLine [-50.00mil -150.00mil -50.00mil 50.00mil 10.00mil]
+ ElementLine [50.00mil -50.00mil 50.00mil 50.00mil 10.00mil]
+ ElementLine [-50.00mil -50.00mil 50.00mil -50.00mil 10.00mil]
+
+ )
+
+Element["" "1824420000" "J1" "unknown" 110.9310mm 90.9680mm -0.3246mm -2.2366mm 0 100 ""]
+(
+ Pin[0.0000 5.2500mm 1.9500mm 30.00mil 2.1500mm 1.1500mm "1" "1" "edge2"]
+ Pin[7.0000mm 5.2500mm 1.9500mm 30.00mil 2.1500mm 1.1500mm "1" "1" "edge2"]
+ Pin[0.0000 1.7500mm 1.9500mm 30.00mil 2.1500mm 1.1500mm "2" "2" "edge2"]
+ Pin[7.0000mm 1.7500mm 1.9500mm 30.00mil 2.1500mm 1.1500mm "2" "2" "edge2"]
+ ElementLine [-2.0000mm -0.3500mm -2.0000mm 7.3500mm 8.00mil]
+ ElementLine [-2.0000mm -0.3500mm 10.0000mm -0.3500mm 8.00mil]
+ ElementLine [10.0000mm -0.3500mm 10.0000mm 7.3500mm 8.00mil]
+ ElementLine [-2.0000mm 7.3500mm 10.0000mm 7.3500mm 8.00mil]
+
+ )
+
+Element["" "0805" "R107" "2.00k_1%" 70.3000mm 82.9068mm -2.3605mm 1.4581mm 1 100 ""]
+(
+ Pad[-3.93mil -35.43mil 3.93mil -35.43mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-3.93mil 35.43mil 3.93mil 35.43mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [27.55mil -3.93mil 27.55mil 3.93mil 8.00mil]
+ ElementLine [-27.55mil -3.93mil -27.55mil 3.93mil 8.00mil]
+
+ )
+
+Element["" "0805" "D104" "unknown" 70.3000mm 79.2068mm 35.50mil 62.50mil 1 100 ""]
+(
+ Pad[-3.93mil 35.43mil 3.93mil 35.43mil 51.18mil 20.00mil 57.18mil "1" "1" "square"]
+ Pad[-3.93mil -35.43mil 3.93mil -35.43mil 51.18mil 20.00mil 57.18mil "2" "2" "square"]
+ ElementLine [-27.55mil -3.93mil -27.55mil 3.93mil 8.00mil]
+ ElementLine [27.55mil -3.93mil 27.55mil 3.93mil 8.00mil]
+
+ )
+
+Element["onsolder" "0805" "R202" "499R_1%" 87.4921mm 2570.00mil -53.07mil -37.50mil 0 100 "onsolder"]
+(
+ Pad[-35.43mil -3.93mil -35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "1" "1" "onsolder,square"]
+ Pad[35.43mil -3.93mil 35.43mil 3.93mil 51.18mil 20.00mil 57.18mil "2" "2" "onsolder,square"]
+ ElementLine [-3.93mil 27.55mil 3.93mil 27.55mil 8.00mil]
+ ElementLine [-3.93mil -27.55mil 3.93mil -27.55mil 8.00mil]
+
+ )
+
+Element["" "MSOP10" "U100" "unknown" 84.8672mm 98.6760mm 37.00mil 14.00mil 1 100 ""]
+(
+ Pad[-10.00mil 0.0000 16.00mil 0.0000 10.50mil 30.00mil 14.50mil "RUN" "1" "square,edge2"]
+ Pad[-10.00mil -19.69mil 16.00mil -19.69mil 10.50mil 30.00mil 14.50mil "I_TH" "2" "square,edge2"]
+ Pad[-10.00mil -39.37mil 16.00mil -39.37mil 10.50mil 30.00mil 14.50mil "FB" "3" "square,edge2"]
+ Pad[-10.00mil -59.06mil 16.00mil -59.06mil 10.50mil 30.00mil 14.50mil "FREQ" "4" "square,edge2"]
+ Pad[-10.00mil -2.0000mm 16.00mil -2.0000mm 10.50mil 30.00mil 14.50mil "MODE" "5" "square,edge2"]
+ Pad[-175.00mil -2.0000mm -149.00mil -2.0000mm 10.50mil 30.00mil 14.50mil "GND" "6" "square"]
+ Pad[-175.00mil -59.06mil -149.00mil -59.06mil 10.50mil 30.00mil 14.50mil "GATE" "7" "square"]
+ Pad[-175.00mil -39.37mil -149.00mil -39.37mil 10.50mil 30.00mil 14.50mil "INTVcc" "8" "square"]
+ Pad[-175.00mil -19.69mil -149.00mil -19.69mil 10.50mil 30.00mil 14.50mil "Vin" "9" "square"]
+ Pad[-175.00mil 0.0000 -149.00mil 0.0000 11.00mil 30.00mil 14.50mil "SENSE" "10" "square"]
+ ElementLine [-60.00mil 19.00mil 32.00mil 19.00mil 10.00mil]
+ ElementLine [-191.00mil 19.00mil -98.00mil 19.00mil 10.00mil]
+ ElementLine [-191.00mil -99.00mil -191.00mil 19.00mil 10.00mil]
+ ElementLine [-191.00mil -99.00mil 32.00mil -99.00mil 10.00mil]
+ ElementLine [32.00mil -99.00mil 32.00mil 19.00mil 10.00mil]
+ ElementArc [-79.00mil 19.00mil 19.00mil 19.00mil 180.000000 180.000000 10.00mil]
+
+ )
+
+Element["hidename" "SOT223" "U404" "AZ1117IH-3.3TRG1" 79.4000mm 70.6140mm 10.1370mm 2.2336mm 3 100 ""]
+(
+ Pad[-33.00mil 0.0000 33.00mil 0.0000 56.00mil 30.00mil 62.00mil "GND" "1" "square"]
+ Pad[-33.00mil 90.00mil 33.00mil 90.00mil 56.00mil 30.00mil 62.00mil "VO" "2" "square"]
+ Pad[-33.00mil 181.00mil 33.00mil 181.00mil 56.00mil 30.00mil 62.00mil "VI" "3" "square"]
+ Pad[244.00mil 45.00mil 244.00mil 135.00mil 122.00mil 30.00mil 128.00mil "VO" "4" "square"]
+ ElementLine [-85.00mil -52.00mil 329.00mil -52.00mil 10.00mil]
+ ElementLine [-85.00mil -52.00mil -85.00mil 233.00mil 10.00mil]
+ ElementLine [-85.00mil 233.00mil 329.00mil 233.00mil 10.00mil]
+ ElementLine [329.00mil -52.00mil 329.00mil 233.00mil 10.00mil]
+
+ )
+
+Element["" "SO8" "U401" "unknown" 3950.00mil 2633.00mil 27.00mil -179.00mil 0 100 ""]
+(
+ Pad[-135.00mil -75.00mil -70.00mil -75.00mil 20.00mil 10.00mil 30.00mil "VCC" "1" "square"]
+ Pad[-135.00mil -25.00mil -70.00mil -25.00mil 20.00mil 10.00mil 30.00mil "RO" "2" "square"]
+ Pad[-135.00mil 25.00mil -70.00mil 25.00mil 20.00mil 10.00mil 30.00mil "DI" "3" "square"]
+ Pad[-135.00mil 75.00mil -70.00mil 75.00mil 20.00mil 10.00mil 30.00mil "GND" "4" "square"]
+ Pad[70.00mil 75.00mil 135.00mil 75.00mil 20.00mil 10.00mil 30.00mil "Y" "5" "square,edge2"]
+ Pad[70.00mil 25.00mil 135.00mil 25.00mil 20.00mil 10.00mil 30.00mil "Zn" "6" "square,edge2"]
+ Pad[70.00mil -25.00mil 135.00mil -25.00mil 20.00mil 10.00mil 30.00mil "Bn" "7" "square,edge2"]
+ Pad[70.00mil -75.00mil 135.00mil -75.00mil 20.00mil 10.00mil 30.00mil "A" "8" "square,edge2"]
+ ElementLine [-155.00mil -95.00mil -155.00mil 95.00mil 10.00mil]
+ ElementLine [-155.00mil 95.00mil 155.00mil 95.00mil 10.00mil]
+ ElementLine [155.00mil 95.00mil 155.00mil -95.00mil 10.00mil]
+ ElementLine [-155.00mil -95.00mil -25.00mil -95.00mil 10.00mil]
+ ElementLine [155.00mil -95.00mil 25.00mil -95.00mil 10.00mil]
+ ElementArc [0.0000 -95.00mil 25.00mil 25.00mil 0.000000 180.000000 10.00mil]
+
+ )
+Layer(1 "top" "copper")
+(
+ Line[3095.00mil 3400.00mil 2905.00mil 3400.00mil 100.00mil 20.00mil "clearline"]
+ Line[77.6080mm 89.4590mm 77.6080mm 87.3650mm 25.00mil 20.00mil "clearline"]
+ Line[77.6080mm 87.3650mm 3075.00mil 3420.00mil 25.00mil 20.00mil "clearline"]
+ Line[76.3380mm 89.4590mm 76.3380mm 86.4760mm 25.00mil 20.00mil "clearline"]
+ Line[76.3380mm 86.4760mm 3010.00mil 3400.00mil 25.00mil 20.00mil "clearline"]
+ Line[75.0680mm 89.4590mm 75.0680mm 86.4760mm 25.00mil 20.00mil "clearline"]
+ Line[75.0680mm 86.4760mm 2960.00mil 3400.00mil 25.00mil 20.00mil "clearline"]
+ Line[73.7980mm 89.4590mm 73.7980mm 86.3710mm 25.00mil 20.00mil "clearline"]
+ Line[73.7980mm 86.3710mm 2905.00mil 3400.00mil 25.00mil 20.00mil "clearline"]
+ Line[2860.00mil 3320.00mil 3055.00mil 3320.00mil 40.00mil 20.00mil "clearline"]
+ Line[3890.00mil 4115.00mil 3745.00mil 4115.00mil 100.00mil 20.00mil "clearline"]
+ Line[3180.00mil 3885.00mil 2965.00mil 3885.00mil 10.00mil 20.00mil "clearline"]
+ Line[2965.00mil 3885.00mil 2955.00mil 3875.00mil 10.00mil 20.00mil "clearline"]
+ Line[2955.00mil 3875.00mil 2955.00mil 3835.00mil 10.00mil 20.00mil "clearline"]
+ Line[2905.00mil 3730.00mil 2905.00mil 3790.00mil 25.00mil 20.00mil "clearline"]
+ Line[2905.00mil 3790.00mil 2950.00mil 3835.00mil 25.00mil 20.00mil "clearline"]
+ Line[2955.00mil 3730.00mil 2955.00mil 3830.00mil 25.00mil 20.00mil "clearline"]
+ Line[3005.00mil 3730.00mil 3005.00mil 3790.00mil 25.00mil 20.00mil "clearline"]
+ Line[3005.00mil 3790.00mil 2955.00mil 3840.00mil 25.00mil 20.00mil "clearline"]
+ Line[2920.00mil 3805.00mil 2985.00mil 3805.00mil 25.00mil 20.00mil "clearline"]
+ Line[3130.00mil 3825.00mil 3090.00mil 3825.00mil 15.00mil 20.00mil "clearline"]
+ Line[3090.00mil 3825.00mil 3055.00mil 3790.00mil 15.00mil 20.00mil "clearline"]
+ Line[3055.00mil 3790.00mil 3055.00mil 3730.00mil 15.00mil 20.00mil "clearline"]
+ Line[2955.00mil 4015.00mil 2955.00mil 3950.00mil 25.00mil 20.00mil "clearline"]
+ Line[2955.00mil 3950.00mil 2890.00mil 4015.00mil 25.00mil 20.00mil "clearline"]
+ Line[2955.00mil 3950.00mil 3020.00mil 4015.00mil 25.00mil 20.00mil "clearline"]
+ Line[2890.00mil 4015.00mil 3020.00mil 4015.00mil 25.00mil 20.00mil "clearline"]
+ Line[2955.00mil 3970.00mil 2955.00mil 3975.00mil 25.00mil 20.00mil "clearline"]
+ Line[2955.00mil 3975.00mil 2915.00mil 4015.00mil 25.00mil 20.00mil "clearline"]
+ Line[2955.00mil 3980.00mil 2990.00mil 4015.00mil 25.00mil 20.00mil "clearline"]
+ Line[3180.00mil 3865.00mil 3210.00mil 3865.00mil 10.00mil 20.00mil "clearline"]
+ Line[84.9434mm 97.6854mm 83.8424mm 97.6854mm 10.00mil 20.00mil "clearline"]
+ Line[83.8424mm 97.6854mm 83.7976mm 97.6854mm 15.00mil 20.00mil "clearline"]
+ Line[81.8926mm 96.6694mm 3225.00mil 3805.00mil 10.00mil 20.00mil "clearline"]
+ Line[82.1466mm 97.6854mm 3270.00mil 3810.00mil 10.00mil 20.00mil "clearline"]
+ Line[83.1372mm 96.6948mm 3272.50mil 3807.50mil 10.00mil 20.00mil "clearline"]
+ Line[83.5988mm 3740.00mil 83.5988mm 96.6620mm 15.00mil 20.00mil "clearline"]
+ Line[83.5988mm 96.6620mm 3290.00mil 96.6948mm 15.00mil 20.00mil "clearline"]
+ Line[3290.00mil 96.6948mm 83.1372mm 96.6948mm 15.00mil 20.00mil "clearline"]
+ Line[3272.50mil 3807.50mil 3272.50mil 96.7329mm 15.00mil 20.00mil "clearline"]
+ Line[3272.50mil 96.7329mm 3235.00mil 97.6854mm 15.00mil 20.00mil "clearline"]
+ Line[3225.00mil 96.6694mm 3225.00mil 95.1121mm 15.00mil 20.00mil "clearline"]
+ Line[3225.00mil 95.1121mm 81.7989mm 3740.00mil 15.00mil 20.00mil "clearline"]
+ Line[3260.00mil 3890.00mil 3300.00mil 3845.00mil 15.00mil 20.00mil "clearline"]
+ Line[3045.00mil 3960.00mil 3100.00mil 3960.00mil 15.00mil 20.00mil "clearline"]
+ Line[3700.00mil 4050.00mil 3720.00mil 4030.00mil 20.00mil 20.00mil "clearline"]
+ Line[3720.00mil 4030.00mil 3860.00mil 4030.00mil 20.00mil 20.00mil "clearline"]
+ Line[3860.00mil 4030.00mil 3885.00mil 4005.00mil 20.00mil 20.00mil "clearline"]
+ Line[3560.00mil 4305.00mil 3750.00mil 4115.00mil 100.00mil 20.00mil ""]
+ Line[89.2701mm 3735.00mil 3465.00mil 3735.00mil 10.00mil 20.00mil "clearline"]
+ Line[3465.00mil 3735.00mil 3450.00mil 3750.00mil 10.00mil 20.00mil "clearline"]
+ Line[3450.00mil 3750.00mil 3450.00mil 3850.00mil 10.00mil 20.00mil "clearline"]
+ Line[89.2701mm 3830.00mil 3450.00mil 3830.00mil 10.00mil 20.00mil "clearline"]
+ Line[89.2701mm 3925.00mil 3460.00mil 3925.00mil 10.00mil 20.00mil "clearline"]
+ Line[84.9434mm 98.6760mm 86.8904mm 98.6760mm 10.00mil 20.00mil "clearline"]
+ Line[3460.00mil 3925.00mil 86.8904mm 98.7014mm 10.00mil 20.00mil "clearline"]
+ Line[91.0699mm 3925.00mil 3625.00mil 3925.00mil 10.00mil 20.00mil "clearline"]
+ Line[3625.00mil 3925.00mil 3650.00mil 3900.00mil 10.00mil 20.00mil "clearline"]
+ Line[3345.00mil 4125.00mil 3625.00mil 4125.00mil 25.00mil 20.00mil "clearline"]
+ Line[3625.00mil 4125.00mil 3700.00mil 4050.00mil 25.00mil 20.00mil "clearline"]
+ Line[94.0961mm 3955.00mil 94.0961mm 3955.00mil 15.00mil 20.00mil "clearline"]
+ Line[94.0961mm 3955.00mil 94.0961mm 100.5731mm 15.00mil 20.00mil "clearline"]
+ Line[91.0699mm 3830.00mil 3630.00mil 3830.00mil 15.00mil 20.00mil "clearline"]
+ Line[3630.00mil 3830.00mil 3650.00mil 3850.00mil 15.00mil 20.00mil "clearline"]
+ Line[3650.00mil 3850.00mil 3650.00mil 3900.00mil 15.00mil 20.00mil "clearline"]
+ Line[91.0699mm 4020.00mil 3625.00mil 4020.00mil 15.00mil 20.00mil "clearline"]
+ Line[3625.00mil 4020.00mil 3635.00mil 4010.00mil 15.00mil 20.00mil "clearline"]
+ Line[3635.00mil 4010.00mil 3635.00mil 3915.00mil 15.00mil 20.00mil "clearline"]
+ Line[3635.00mil 3915.00mil 3650.00mil 3900.00mil 15.00mil 20.00mil "clearline"]
+ Line[3625.00mil 4080.00mil 3705.00mil 4000.00mil 15.00mil 20.00mil "clearline"]
+ Line[3705.00mil 4000.00mil 3705.00mil 100.4679mm 15.00mil 20.00mil "clearline"]
+ Line[3705.00mil 100.4679mm 94.0961mm 3955.00mil 15.00mil 20.00mil "clearline"]
+ Line[3635.00mil 3735.00mil 91.0699mm 3735.00mil 15.00mil 20.00mil "clearline"]
+ Line[2260.00mil 3678.00mil 57.3904mm 96.6606mm 36.00mil 20.00mil "clearline"]
+ Line[55.7340mm 98.3170mm 57.3904mm 96.6606mm 40.00mil 20.00mil "clearline"]
+ Line[57.3904mm 96.6606mm 57.3904mm 98.4386mm 40.00mil 20.00mil "clearline"]
+ Line[57.3904mm 98.4386mm 55.7180mm 100.1110mm 40.00mil 20.00mil ""]
+ Line[55.7180mm 99.3312mm 2259.30mil 3845.00mil 40.00mil 20.00mil ""]
+ Line[57.4825mm 97.6750mm 57.3857mm 97.7717mm 25.00mil 20.00mil "clearline"]
+ Line[2310.00mil 3678.00mil 2310.00mil 3755.00mil 25.00mil 20.00mil "clearline"]
+ Line[2310.00mil 3755.00mil 2325.00mil 3770.00mil 25.00mil 20.00mil "clearline"]
+ Line[2210.00mil 3678.00mil 2210.00mil 3755.00mil 25.00mil 20.00mil "clearline"]
+ Line[2210.00mil 3755.00mil 2195.00mil 3770.00mil 25.00mil 20.00mil "clearline"]
+ Line[2460.00mil 3755.00mil 2460.00mil 3678.00mil 15.00mil 20.00mil "clearline"]
+ Line[2560.00mil 3755.00mil 2560.00mil 3670.00mil 15.00mil 20.00mil "clearline"]
+ Line[45.5340mm 92.0820mm 45.5340mm 94.8100mm 100.00mil 20.00mil "clearline"]
+ Line[45.5340mm 94.8100mm 1860.00mil 3800.00mil 100.00mil 20.00mil "clearline"]
+ Line[1860.00mil 3800.00mil 2110.00mil 3800.00mil 100.00mil 20.00mil "clearline"]
+ Line[2195.00mil 3770.00mil 2165.00mil 3800.00mil 40.00mil 20.00mil "clearline"]
+ Line[2165.00mil 3800.00mil 2080.00mil 3800.00mil 40.00mil 20.00mil "clearline"]
+ Line[2195.00mil 3770.00mil 2095.00mil 3770.00mil 40.00mil 20.00mil "clearline"]
+ Line[2095.00mil 3770.00mil 2065.00mil 3800.00mil 40.00mil 20.00mil "clearline"]
+ Line[2210.00mil 3680.00mil 2210.00mil 3750.00mil 36.00mil 20.00mil "clearline"]
+ Line[2210.00mil 3750.00mil 2190.00mil 3770.00mil 36.00mil 20.00mil "clearline"]
+ Line[45.5340mm 82.3820mm 45.5340mm 77.1480mm 100.00mil 20.00mil "clearline"]
+ Line[45.5340mm 77.1480mm 1805.00mil 3025.00mil 100.00mil 20.00mil "clearline"]
+ Line[1805.00mil 3025.00mil 1805.00mil 73.8350mm 100.00mil 20.00mil "clearline"]
+ Line[1805.00mil 73.8350mm 45.7595mm 73.7475mm 100.00mil 20.00mil "clearline"]
+ Line[2565.00mil 2960.00mil 1805.00mil 2960.00mil 15.00mil 20.00mil "clearline"]
+ Line[2000.00mil 3065.00mil 2080.00mil 3065.00mil 36.00mil 20.00mil "clearline"]
+ Line[1930.00mil 3065.00mil 1805.00mil 3065.00mil 36.00mil 20.00mil "clearline"]
+ Line[2360.00mil 3680.00mil 2360.00mil 3730.00mil 25.00mil 20.00mil "clearline"]
+ Line[2360.00mil 3730.00mil 2400.00mil 3770.00mil 25.00mil 20.00mil "clearline"]
+ Line[2240.00mil 3420.00mil 2245.00mil 3415.00mil 25.00mil 20.00mil "clearline"]
+ Line[2090.00mil 3520.00mil 2095.00mil 3515.00mil 25.00mil 20.00mil "clearline"]
+ Line[1805.00mil 2910.00mil 1805.00mil 2560.00mil 100.00mil 20.00mil ""]
+ Line[1845.00mil 2330.00mil 1850.00mil 2335.00mil 25.00mil 20.00mil ""]
+ Line[3170.00mil 3960.00mil 3225.00mil 3960.00mil 15.00mil 20.00mil "clearline"]
+ Line[55.7340mm 100.1270mm 55.7340mm 98.3170mm 40.00mil 20.00mil ""]
+ Line[78.7291mm 4055.00mil 3065.00mil 4055.00mil 15.00mil 20.00mil "clearline"]
+ Line[3065.00mil 4055.00mil 3020.00mil 4100.00mil 15.00mil 20.00mil ""]
+ Line[3625.00mil 4080.00mil 3490.00mil 4080.00mil 15.00mil 20.00mil "clearline"]
+ Line[83.9361mm 3960.00mil 3260.00mil 3960.00mil 15.00mil 20.00mil "clearline"]
+ Line[85.7359mm 3960.00mil 3430.00mil 3960.00mil 15.00mil 20.00mil "clearline"]
+ Line[3490.00mil 4080.00mil 3470.00mil 4060.00mil 15.00mil 20.00mil "clearline"]
+ Line[3470.00mil 4060.00mil 3470.00mil 3925.00mil 15.00mil 20.00mil "clearline"]
+ Line[89.2701mm 4020.00mil 3470.00mil 4020.00mil 15.00mil 20.00mil "clearline"]
+ Line[95.6201mm 3950.00mil 3705.00mil 3950.00mil 15.00mil 20.00mil "clearline"]
+ Line[86.4761mm 96.4995mm 86.4761mm 3730.00mil 15.00mil 20.00mil "clearline"]
+ Line[3635.00mil 3735.00mil 3650.00mil 3720.00mil 15.00mil 20.00mil "clearline"]
+ Line[3650.00mil 3720.00mil 3650.00mil 3655.00mil 15.00mil 20.00mil "clearline"]
+ Line[3650.00mil 3655.00mil 3635.00mil 3640.00mil 15.00mil 20.00mil "clearline"]
+ Line[3635.00mil 3640.00mil 91.0318mm 3640.00mil 15.00mil 20.00mil "clearline"]
+ Line[89.2320mm 3640.00mil 3475.00mil 3640.00mil 15.00mil 20.00mil "clearline"]
+ Line[3475.00mil 3640.00mil 3460.00mil 3625.00mil 15.00mil 20.00mil "clearline"]
+ Line[3460.00mil 3625.00mil 3460.00mil 3615.00mil 15.00mil 20.00mil "clearline"]
+ Line[3460.00mil 3615.00mil 3405.00mil 3615.00mil 15.00mil 20.00mil "clearline"]
+ Line[3405.00mil 3615.00mil 3405.00mil 92.9312mm 15.00mil 20.00mil "clearline"]
+ Line[3405.00mil 92.9312mm 86.4761mm 92.9422mm 15.00mil 20.00mil "clearline"]
+ Line[3730.00mil 3681.50mil 3730.00mil 3600.00mil 15.00mil 20.00mil "clearline"]
+ Line[3730.00mil 3838.50mil 3730.00mil 3900.00mil 15.00mil 20.00mil "clearline"]
+ Line[3730.00mil 3900.00mil 3705.00mil 3925.00mil 15.00mil 20.00mil "clearline"]
+ Line[3705.00mil 3925.00mil 3705.00mil 3950.00mil 15.00mil 20.00mil "clearline"]
+ Line[2560.00mil 3670.00mil 2685.00mil 3545.00mil 15.00mil 20.00mil "clearline"]
+ Line[2685.00mil 3545.00mil 2685.00mil 3080.00mil 15.00mil 20.00mil "clearline"]
+ Line[2685.00mil 3080.00mil 2565.00mil 2960.00mil 15.00mil 20.00mil "clearline"]
+ Line[2140.00mil 3105.00mil 2140.00mil 3435.00mil 50.00mil 20.00mil ""]
+ Line[2585.00mil 3140.00mil 2585.00mil 3435.00mil 50.00mil 20.00mil ""]
+ Line[2090.00mil 3135.00mil 2620.00mil 3135.00mil 50.00mil 20.00mil ""]
+ Line[2510.00mil 3678.00mil 2510.00mil 3825.00mil 15.00mil 20.00mil "clearline"]
+ Line[2510.00mil 3825.00mil 2490.00mil 3845.00mil 15.00mil 20.00mil "clearline"]
+ Line[2490.00mil 3845.00mil 2455.00mil 3845.00mil 15.00mil 20.00mil "clearline"]
+ Line[2380.00mil 3845.00mil 2260.00mil 3845.00mil 15.00mil 20.00mil "clearline"]
+ Line[1890.00mil 2670.00mil 1815.00mil 2670.00mil 50.00mil 20.00mil "clearline"]
+ Line[1890.00mil 2675.00mil 1815.00mil 2750.00mil 50.00mil 20.00mil "clearline"]
+ Line[1815.00mil 2750.00mil 1810.00mil 2750.00mil 50.00mil 20.00mil "clearline"]
+ Line[80.5289mm 4055.00mil 3245.00mil 4055.00mil 15.00mil 20.00mil "clearline"]
+ Line[3245.00mil 4055.00mil 3260.00mil 4040.00mil 15.00mil 20.00mil "clearline"]
+ Line[3260.00mil 3890.00mil 3260.00mil 4040.00mil 15.00mil 20.00mil "clearline"]
+ Line[3225.00mil 3880.00mil 3225.00mil 4010.00mil 15.00mil 20.00mil "clearline"]
+ Line[3295.00mil 4020.00mil 3295.00mil 4075.00mil 25.00mil 20.00mil "clearline"]
+ Line[3295.00mil 4075.00mil 3345.00mil 4125.00mil 25.00mil 20.00mil "clearline"]
+ Line[79.6318mm 97.1774mm 80.7524mm 97.1774mm 10.00mil 20.00mil "clearline"]
+ Line[52.7434mm 89.8172mm 52.7434mm 96.4212mm 100.00mil 20.00mil "clearline"]
+ Line[3209.60mil 3865.00mil 3225.00mil 3880.40mil 10.00mil 20.00mil "clearline"]
+ Line[3225.00mil 3880.40mil 3225.00mil 98.5639mm 10.00mil 20.00mil "clearline"]
+ Line[80.7524mm 97.6854mm 82.1466mm 97.6854mm 10.00mil 20.00mil "clearline"]
+ Line[2835.00mil 3790.00mil 2835.00mil 3495.00mil 50.00mil 20.00mil ""]
+ Line[2835.00mil 3495.00mil 2770.00mil 3430.00mil 50.00mil 20.00mil "clearline"]
+ Line[2740.00mil 3570.00mil 2740.00mil 92.1692mm 25.00mil 20.00mil "clearline"]
+ Line[2740.00mil 93.9691mm 2740.00mil 3805.00mil 25.00mil 20.00mil ""]
+ Line[2740.00mil 3805.00mil 2735.00mil 3810.00mil 25.00mil 20.00mil "clearline"]
+ Line[2000.00mil 2825.00mil 1810.00mil 2825.00mil 10.00mil 20.00mil "clearline"]
+ Line[1810.00mil 2825.00mil 1805.00mil 2830.00mil 10.00mil 20.00mil "clearline"]
+ Line[1795.00mil 4040.00mil 1895.00mil 4040.00mil 50.00mil 20.00mil ""]
+ Line[1795.00mil 4040.00mil 1795.00mil 4110.00mil 50.00mil 20.00mil ""]
+ Line[1800.00mil 4040.00mil 1800.00mil 3975.00mil 50.00mil 20.00mil ""]
+ Line[1795.00mil 4040.00mil 1750.00mil 4040.00mil 50.00mil 20.00mil ""]
+ Line[3885.00mil 4005.00mil 3915.00mil 3975.00mil 25.00mil 20.00mil "clearline"]
+ Line[97.4199mm 3950.00mil 3915.00mil 3950.00mil 10.00mil 20.00mil "clearline"]
+ Line[60.3359mm 2750.00mil 2375.00mil 69.8391mm 10.00mil 20.00mil "clearline"]
+ Line[60.3359mm 71.6498mm 60.3359mm 72.8871mm 10.00mil 20.00mil "clearline"]
+ Line[60.3359mm 72.8871mm 2365.00mil 2880.00mil 10.00mil 20.00mil "clearline"]
+ Line[2365.00mil 2880.00mil 2195.00mil 2880.00mil 10.00mil 20.00mil "clearline"]
+ Line[2195.00mil 2880.00mil 2140.00mil 2825.00mil 10.00mil 20.00mil "clearline"]
+ Line[2140.00mil 2825.00mil 52.5998mm 2825.00mil 10.00mil 20.00mil "clearline"]
+ Line[2870.00mil 3350.00mil 3145.00mil 3350.00mil 100.00mil 20.00mil "clearline"]
+ Line[83.3000mm 83.7000mm 83.3000mm 84.8000mm 100.00mil 20.00mil "clearline"]
+ Line[83.3000mm 84.8000mm 81.8000mm 86.3000mm 100.00mil 20.00mil "clearline"]
+ Line[81.8000mm 86.3000mm 76.9000mm 86.3000mm 100.00mil 20.00mil "clearline"]
+ Line[76.9000mm 86.3000mm 78.0000mm 86.3000mm 100.00mil 20.00mil "clearline"]
+ Line[78.0000mm 86.3000mm 79.2000mm 85.1000mm 100.00mil 20.00mil "clearline"]
+ Line[79.2000mm 85.1000mm 82.8000mm 85.1000mm 100.00mil 20.00mil "clearline"]
+ Line[82.8000mm 85.1000mm 83.0000mm 84.9000mm 100.00mil 20.00mil "clearline"]
+ Line[108.8309mm 69.4630mm 4296.50mil 69.4630mm 10.00mil 20.00mil "clearline"]
+ Line[108.5310mm 72.4630mm 4296.50mil 72.4630mm 10.00mil 20.00mil "clearline"]
+ Line[112.1310mm 81.4630mm 110.2850mm 83.3090mm 15.00mil 20.00mil "clearline"]
+ Line[110.2850mm 83.3090mm 106.0090mm 83.3090mm 15.00mil 20.00mil "clearline"]
+ Line[106.0090mm 83.3090mm 4057.40mil 80.3580mm 15.00mil 20.00mil "clearline"]
+ Line[105.5550mm 80.5850mm 106.4330mm 81.4630mm 15.00mil 20.00mil "clearline"]
+ Line[106.4330mm 81.4630mm 4296.50mil 81.4630mm 15.00mil 20.00mil "clearline"]
+ Line[112.1310mm 78.4630mm 110.6900mm 79.9040mm 15.00mil 20.00mil "clearline"]
+ Line[110.6900mm 79.9040mm 107.8250mm 79.9040mm 15.00mil 20.00mil "clearline"]
+ Line[107.8250mm 79.9040mm 105.1010mm 77.1800mm 15.00mil 20.00mil "clearline"]
+ Line[106.0090mm 76.2720mm 108.2000mm 78.4630mm 15.00mil 20.00mil "clearline"]
+ Line[108.2000mm 78.4630mm 4296.50mil 78.4630mm 15.00mil 20.00mil "clearline"]
+ Line[107.9240mm 75.4630mm 4296.50mil 75.4630mm 15.00mil 20.00mil "clearline"]
+ Line[112.1310mm 72.4630mm 110.5920mm 74.0020mm 15.00mil 20.00mil "clearline"]
+ Line[110.5920mm 74.0020mm 108.5060mm 74.0020mm 15.00mil 20.00mil "clearline"]
+ Line[108.5060mm 74.0020mm 106.9170mm 72.4130mm 15.00mil 20.00mil "clearline"]
+ Line[106.9170mm 69.9160mm 105.8410mm 68.8400mm 15.00mil 20.00mil "clearline"]
+ Line[105.7060mm 67.5700mm 107.5980mm 69.4620mm 15.00mil 20.00mil "clearline"]
+ Line[107.5980mm 69.4620mm 107.5980mm 70.9300mm 15.00mil 20.00mil "clearline"]
+ Line[107.5980mm 70.9300mm 4296.50mil 72.4630mm 15.00mil 20.00mil "clearline"]
+ Line[107.8250mm 75.4630mm 106.9170mm 74.5550mm 15.00mil 20.00mil "clearline"]
+ Line[106.9170mm 74.5550mm 106.9170mm 73.7750mm 15.00mil 20.00mil "clearline"]
+ Line[106.9170mm 73.7750mm 105.4230mm 72.2810mm 15.00mil 20.00mil "clearline"]
+ Line[112.1310mm 69.4630mm 110.7680mm 68.1000mm 15.00mil 20.00mil "clearline"]
+ Line[110.7680mm 68.1000mm 108.7330mm 68.1000mm 15.00mil 20.00mil "clearline"]
+ Line[108.7330mm 68.1000mm 105.6330mm 65.0000mm 15.00mil 20.00mil "clearline"]
+ Line[105.5710mm 66.3000mm 108.7340mm 69.4630mm 15.00mil 20.00mil "clearline"]
+ Line[108.7340mm 69.4630mm 109.1860mm 69.4630mm 15.00mil 20.00mil "clearline"]
+ Line[62.1980mm 69.9160mm 62.1320mm 2750.00mil 15.00mil 20.00mil "clearline"]
+ Line[62.1320mm 2750.00mil 60.3359mm 2750.00mil 15.00mil 20.00mil "clearline"]
+ Line[3247.00mil 2332.00mil 83.7630mm 60.5220mm 15.00mil 20.00mil "clearline"]
+ Line[83.7630mm 60.5220mm 83.7630mm 62.4250mm 15.00mil 20.00mil "clearline"]
+ Line[83.7630mm 62.4250mm 84.6710mm 63.3330mm 15.00mil 20.00mil "clearline"]
+ Line[104.8000mm 66.3000mm 104.6001mm 66.4999mm 15.00mil 20.00mil "clearline"]
+ Line[105.4230mm 72.2810mm 105.4230mm 71.6000mm 15.00mil 20.00mil "clearline"]
+ Line[102.9000mm 70.3300mm 105.8300mm 70.3300mm 15.00mil 20.00mil "clearline"]
+ Line[102.9000mm 71.6000mm 105.4000mm 71.6000mm 15.00mil 20.00mil "clearline"]
+ Line[106.0090mm 74.4560mm 106.0090mm 76.2720mm 15.00mil 20.00mil "clearline"]
+ Line[104.4230mm 72.8700mm 106.0090mm 74.4560mm 15.00mil 20.00mil "clearline"]
+ Line[102.9000mm 72.8700mm 104.4230mm 72.8700mm 15.00mil 20.00mil "clearline"]
+ Line[104.3310mm 74.1400mm 102.9000mm 74.1400mm 15.00mil 20.00mil "clearline"]
+ Line[105.1010mm 74.9100mm 104.3310mm 74.1400mm 15.00mil 20.00mil "clearline"]
+ Line[105.1010mm 77.1800mm 105.1010mm 74.9100mm 15.00mil 20.00mil "clearline"]
+ Line[105.5550mm 79.4500mm 105.5550mm 80.5850mm 15.00mil 20.00mil "clearline"]
+ Line[104.2750mm 78.1700mm 105.5550mm 79.4500mm 15.00mil 20.00mil "clearline"]
+ Line[102.9000mm 78.1700mm 104.2750mm 78.1700mm 15.00mil 20.00mil "clearline"]
+ Line[4057.40mil 80.3580mm 4057.40mil 79.4500mm 15.00mil 20.00mil "clearline"]
+ Line[101.9140mm 95.2840mm 102.0410mm 95.1570mm 20.00mil 20.00mil ""]
+ Line[99.5290mm 89.2160mm 99.5010mm 89.1880mm 100.00mil 20.00mil "clearline"]
+ Line[102.1100mm 96.4020mm 101.9360mm 96.5760mm 50.00mil 20.00mil "clearline"]
+ Line[99.5010mm 88.4260mm 99.5010mm 90.0770mm 100.00mil 20.00mil "clearline"]
+ Line[117.9160mm 105.9520mm 117.9589mm 105.9949mm 40.00mil 20.00mil "clearline"]
+ Line[116.1380mm 111.0320mm 116.4349mm 111.0320mm 40.00mil 20.00mil "clearline"]
+ Line[116.4349mm 111.0320mm 117.9589mm 109.5080mm 40.00mil 20.00mil "clearline"]
+ Line[105.8510mm 99.3480mm 105.8510mm 97.9510mm 25.00mil 20.00mil ""]
+ Line[105.2160mm 99.9830mm 105.8510mm 99.3480mm 25.00mil 20.00mil "clearline"]
+ Line[103.8299mm 99.9830mm 105.2160mm 99.9830mm 25.00mil 20.00mil "clearline"]
+ Line[100.6440mm 99.9830mm 102.0301mm 99.9830mm 25.00mil 20.00mil "clearline"]
+ Line[99.2470mm 97.8240mm 100.2630mm 96.8080mm 25.00mil 20.00mil "clearline"]
+ Line[99.5010mm 94.1410mm 101.5780mm 96.2180mm 100.00mil 20.00mil ""]
+ Line[103.4380mm 89.2160mm 99.5290mm 89.2160mm 100.00mil 20.00mil "clearline"]
+ Line[94.8260mm 88.4260mm 99.5010mm 88.4260mm 100.00mil 20.00mil "clearline"]
+ Line[99.5010mm 89.8230mm 99.5010mm 94.0140mm 100.00mil 20.00mil "clearline"]
+ Line[110.9310mm 92.7180mm 103.5110mm 92.7180mm 100.00mil 20.00mil "clearline"]
+ Line[114.6457mm 111.0320mm 117.9589mm 111.0320mm 40.00mil 20.00mil "clearline"]
+ Line[114.6457mm 105.9520mm 117.9160mm 105.9520mm 40.00mil 20.00mil "clearline"]
+ Line[117.9589mm 110.2271mm 117.9160mm 110.2700mm 100.00mil 20.00mil "clearline"]
+ Line[108.5060mm 108.5060mm 104.0610mm 108.5060mm 100.00mil 20.00mil "clearline"]
+ Line[94.8860mm 88.5300mm 92.8200mm 86.4640mm 100.00mil 20.00mil "clearline"]
+ Line[92.8200mm 86.4640mm 92.8200mm 3300.00mil 100.00mil 20.00mil "clearline"]
+ Line[99.2340mm 97.8370mm 99.2340mm 101.1720mm 25.00mil 20.00mil "clearline"]
+ Line[99.2340mm 101.1720mm 98.7450mm 4002.40mil 25.00mil 20.00mil "clearline"]
+ Line[113.5000mm 85.8060mm 101.6960mm 85.8060mm 100.00mil 20.00mil "clearline"]
+ Line[97.7305mm 70.2810mm 99.5418mm 70.2810mm 15.00mil 20.00mil "clearline"]
+ Line[99.5418mm 70.2810mm 3919.00mil 2767.00mil 15.00mil 20.00mil "clearline"]
+ Line[97.6930mm 75.6300mm 99.5314mm 75.6300mm 15.00mil 20.00mil "clearline"]
+ Line[99.5314mm 75.6300mm 3919.00mil 2978.00mil 15.00mil 20.00mil "clearline"]
+ Line[3917.00mil 2563.00mil 3972.00mil 2618.00mil 45.00mil 20.00mil "clearline"]
+ Line[3972.00mil 2618.00mil 3972.00mil 2750.00mil 45.00mil 20.00mil "clearline"]
+ Line[3972.00mil 2750.00mil 100.4578mm 70.2810mm 45.00mil 20.00mil "clearline"]
+ Line[100.4578mm 70.2810mm 3918.00mil 70.2810mm 45.00mil 20.00mil "clearline"]
+ Line[99.5320mm 68.8700mm 3920.00mil 2710.00mil 15.00mil 20.00mil "clearline"]
+ Line[3918.00mil 2977.00mil 3952.00mil 2977.00mil 45.00mil 20.00mil "clearline"]
+ Line[3952.00mil 2977.00mil 3972.00mil 2957.00mil 45.00mil 20.00mil "clearline"]
+ Line[3972.00mil 2957.00mil 3972.00mil 2646.00mil 45.00mil 20.00mil "clearline"]
+ Line[97.7305mm 74.0910mm 97.7567mm 2918.00mil 15.00mil 20.00mil "clearline"]
+ Line[97.7567mm 2918.00mil 3920.00mil 2918.00mil 15.00mil 20.00mil "clearline"]
+ Line[97.6930mm 79.4400mm 99.5314mm 79.4400mm 15.00mil 20.00mil "clearline"]
+ Line[99.5314mm 79.4400mm 3919.00mil 3128.00mil 15.00mil 20.00mil "clearline"]
+ Line[2721.00mil 2383.00mil 2699.00mil 2405.00mil 15.00mil 20.00mil "clearline"]
+ Line[2699.00mil 2405.00mil 2699.00mil 2470.00mil 15.00mil 20.00mil "clearline"]
+ Line[2699.00mil 2470.00mil 2729.00mil 2500.00mil 15.00mil 20.00mil "clearline"]
+ Line[2847.00mil 2332.00mil 2822.00mil 2332.00mil 15.00mil 20.00mil "clearline"]
+ Line[2822.00mil 2332.00mil 2770.50mil 2383.50mil 15.00mil 20.00mil "clearline"]
+ Line[2770.50mil 2383.50mil 2720.50mil 2383.50mil 15.00mil 20.00mil "clearline"]
+ Line[2747.00mil 2432.00mil 2770.00mil 2432.00mil 15.00mil 20.00mil "clearline"]
+ Line[2770.00mil 2432.00mil 2819.00mil 2383.00mil 15.00mil 20.00mil "clearline"]
+ Line[2902.00mil 2463.00mil 2932.00mil 2493.00mil 15.00mil 20.00mil "clearline"]
+ Line[2728.50mil 2499.50mil 2837.00mil 2608.00mil 15.00mil 20.00mil "clearline"]
+ Line[2837.00mil 2608.00mil 3322.00mil 2608.00mil 15.00mil 20.00mil "clearline"]
+ Line[2847.00mil 2432.00mil 2847.00mil 2525.00mil 15.00mil 20.00mil "clearline"]
+ Line[2847.00mil 2525.00mil 2904.00mil 2582.00mil 15.00mil 20.00mil "clearline"]
+ Line[2904.00mil 2582.00mil 3319.00mil 2582.00mil 15.00mil 20.00mil "clearline"]
+ Line[2931.50mil 2492.50mil 2996.00mil 2557.00mil 15.00mil 20.00mil "clearline"]
+ Line[2996.00mil 2557.00mil 3240.00mil 2557.00mil 15.00mil 20.00mil "clearline"]
+ Line[3321.00mil 2608.00mil 3347.00mil 2608.00mil 15.00mil 20.00mil "clearline"]
+ Line[3318.00mil 2582.00mil 3361.00mil 2582.00mil 15.00mil 20.00mil "clearline"]
+ Line[3374.00mil 2557.00mil 3233.00mil 2557.00mil 15.00mil 20.00mil "clearline"]
+ Line[3098.00mil 2514.00mil 3114.00mil 2530.00mil 15.00mil 20.00mil "clearline"]
+ Line[3114.00mil 2530.00mil 3390.00mil 2530.00mil 15.00mil 20.00mil "clearline"]
+ Line[84.7227mm 63.3847mm 93.1789mm 63.3847mm 15.00mil 20.00mil "clearline"]
+ Line[3668.00mil 2495.00mil 94.5017mm 64.7075mm 15.00mil 20.00mil "clearline"]
+ Line[3387.00mil 2530.00mil 3656.00mil 2530.00mil 15.00mil 20.00mil "clearline"]
+ Line[3777.00mil 2780.00mil 3777.00mil 2696.00mil 15.00mil 20.00mil "clearline"]
+ Line[3777.00mil 2696.00mil 3638.00mil 2557.00mil 15.00mil 20.00mil "clearline"]
+ Line[3638.00mil 2557.00mil 3371.00mil 2557.00mil 15.00mil 20.00mil "clearline"]
+ Line[3744.00mil 2819.00mil 96.3160mm 72.8210mm 15.00mil 20.00mil "clearline"]
+ Line[96.3160mm 72.8210mm 97.7305mm 72.8210mm 15.00mil 20.00mil "clearline"]
+ Line[2881.00mil 2382.50mil 2899.50mil 2401.00mil 15.00mil 20.00mil ""]
+ Line[2899.50mil 2401.00mil 2899.50mil 2460.50mil 15.00mil 20.00mil ""]
+ Line[2819.50mil 2382.50mil 2881.00mil 2382.50mil 15.00mil 20.00mil ""]
+ Line[2881.00mil 2382.50mil 73.2219mm 60.5600mm 15.00mil 20.00mil ""]
+ Line[2769.00mil 82.1739mm 70.3508mm 82.1557mm 15.00mil 20.00mil ""]
+ Line[70.3000mm 82.0069mm 70.3000mm 80.1067mm 15.00mil 20.00mil "clearline"]
+ Line[70.2729mm 78.3069mm 70.3000mm 78.3069mm 15.00mil 20.00mil ""]
+ Line[70.2002mm 83.8067mm 70.2002mm 86.9388mm 15.00mil 20.00mil ""]
+ Line[70.2002mm 86.9388mm 2794.00mil 3453.00mil 15.00mil 20.00mil ""]
+ Line[75.1674mm 70.8760mm 75.5910mm 70.4524mm 25.00mil 20.00mil ""]
+ Line[75.5910mm 70.4524mm 75.5910mm 68.7810mm 25.00mil 20.00mil ""]
+ Line[75.5910mm 68.7810mm 75.7964mm 2716.00mil 25.00mil 20.00mil ""]
+ Line[75.7964mm 2716.00mil 3050.00mil 2716.00mil 25.00mil 20.00mil ""]
+ Line[3050.00mil 2716.00mil 3096.00mil 2670.00mil 25.00mil 20.00mil ""]
+ Line[3096.00mil 2670.00mil 3096.00mil 2656.00mil 25.00mil 20.00mil ""]
+ Line[3096.00mil 2656.00mil 78.8887mm 67.7127mm 25.00mil 20.00mil ""]
+ Line[78.8887mm 67.7127mm 80.6736mm 67.7127mm 25.00mil 20.00mil ""]
+ Line[75.1674mm 70.8760mm 75.4294mm 70.6140mm 25.00mil 20.00mil ""]
+ Line[75.4294mm 70.6140mm 79.4000mm 70.6140mm 25.00mil 20.00mil ""]
+ Line[80.6736mm 68.5022mm 80.6736mm 67.7127mm 25.00mil 20.00mil ""]
+ Line[79.0976mm 70.6140mm 3120.00mil 70.6140mm 25.00mil 20.00mil ""]
+ Line[3648.00mil 79.4500mm 76.3834mm 79.4500mm 3.1700mm 20.00mil ""]
+ Line[76.3834mm 79.4500mm 2471.00mil 65.8300mm 3.1700mm 20.00mil ""]
+ Line[63.0843mm 66.1509mm 62.0844mm 2565.00mil 3.1700mm 20.00mil ""]
+ Line[62.0844mm 2565.00mil 1860.00mil 2565.00mil 3.1700mm 20.00mil ""]
+ Line[71.6888mm 73.9240mm 2799.00mil 2887.00mil 25.00mil 20.00mil ""]
+ Line[83.7216mm 67.3952mm 83.8996mm 67.5732mm 25.00mil 20.00mil ""]
+ Line[83.8996mm 67.5732mm 3364.00mil 67.5732mm 25.00mil 20.00mil ""]
+ Line[80.6736mm 67.3952mm 3176.00mil 2712.00mil 25.00mil 20.00mil ""]
+ Line[3176.00mil 2712.00mil 80.6702mm 2716.00mil 25.00mil 20.00mil ""]
+ Line[80.6702mm 2716.00mil 80.6697mm 2725.00mil 25.00mil 20.00mil ""]
+ Line[3126.00mil 2725.00mil 3126.00mil 70.6140mm 25.00mil 20.00mil ""]
+ Line[71.6888mm 73.9240mm 76.7942mm 73.9240mm 25.00mil 20.00mil ""]
+ Line[76.7942mm 73.9240mm 3037.00mil 2924.00mil 25.00mil 20.00mil ""]
+ Line[3037.00mil 2924.00mil 3037.00mil 2950.00mil 25.00mil 20.00mil ""]
+ Line[3037.00mil 2950.00mil 77.4212mm 75.2114mm 25.00mil 20.00mil ""]
+ Line[77.4212mm 75.2114mm 3126.00mil 75.2114mm 25.00mil 20.00mil ""]
+ Line[70.3998mm 78.3069mm 70.3998mm 77.1308mm 25.00mil 20.00mil ""]
+ Line[70.3998mm 77.1308mm 2752.00mil 3017.00mil 25.00mil 20.00mil ""]
+ Line[2752.00mil 3017.00mil 69.8938mm 76.6388mm 25.00mil 20.00mil ""]
+ Line[69.8938mm 76.6388mm 68.6048mm 76.6388mm 25.00mil 20.00mil ""]
+ Line[80.6697mm 2725.00mil 3060.00mil 2725.00mil 25.00mil 20.00mil ""]
+ Line[3060.00mil 2725.00mil 3050.00mil 2715.00mil 25.00mil 20.00mil ""]
+ Line[3808.00mil 3175.00mil 3945.00mil 3175.00mil 25.00mil 20.00mil ""]
+ Line[3945.00mil 3175.00mil 3977.00mil 3143.00mil 25.00mil 20.00mil ""]
+ Line[3977.00mil 3143.00mil 3977.00mil 77.1540mm 25.00mil 20.00mil ""]
+ Line[3977.00mil 77.1540mm 3917.00mil 75.6300mm 25.00mil 20.00mil ""]
+ Line[3817.00mil 3175.00mil 3809.30mil 3175.00mil 25.00mil 30.00mil ""]
+ Line[3809.30mil 3175.00mil 3768.00mil 79.5960mm 25.00mil 30.00mil ""]
+ Line[3768.00mil 79.5960mm 3768.00mil 3118.00mil 25.00mil 30.00mil ""]
+ Line[3768.00mil 3118.00mil 3666.00mil 3016.00mil 25.00mil 30.00mil ""]
+ Line[3999.00mil 85.8060mm 98.6996mm 3265.00mil 100.00mil 20.00mil ""]
+ Line[98.6996mm 3265.00mil 3840.00mil 3265.00mil 100.00mil 20.00mil ""]
+ Line[93.6232mm 79.4500mm 3644.00mil 79.4500mm 45.00mil 30.00mil ""]
+ Line[3831.00mil 3265.00mil 93.8264mm 79.4500mm 45.00mil 30.00mil ""]
+ Line[93.8264mm 79.4500mm 3628.00mil 79.4500mm 45.00mil 30.00mil ""]
+ Line[112.1310mm 63.4630mm 112.1680mm 2500.00mil 25.00mil 30.00mil ""]
+ Line[112.1310mm 63.4630mm 112.1448mm 2498.00mil 40.00mil 20.00mil ""]
+ Line[4467.00mil 85.8060mm 4503.00mil 84.8916mm 40.00mil 20.00mil ""]
+ Line[4503.00mil 84.8916mm 4503.00mil 3282.00mil 40.00mil 20.00mil ""]
+ Line[4503.00mil 3282.00mil 4494.00mil 3291.00mil 40.00mil 20.00mil ""]
+ Line[4494.00mil 3291.00mil 4494.00mil 85.8060mm 40.00mil 20.00mil ""]
+ Line[4494.00mil 85.8060mm 4486.00mil 85.6028mm 40.00mil 20.00mil ""]
+ Line[4486.00mil 85.6028mm 4486.00mil 3263.00mil 40.00mil 20.00mil ""]
+ Line[4487.00mil 2649.00mil 4487.00mil 2649.00mil 40.00mil 20.00mil ""]
+ Line[4412.00mil 2615.00mil 4479.00mil 2682.00mil 40.00mil 20.00mil ""]
+ Line[4479.00mil 2682.00mil 4521.00mil 2682.00mil 40.00mil 20.00mil ""]
+ Line[103.4380mm 89.2160mm 4075.80mil 3509.00mil 100.00mil 20.00mil ""]
+ Line[4060.80mil 3513.00mil 4686.00mil 3513.00mil 100.00mil 20.00mil ""]
+ Line[112.1037mm 63.4357mm 4473.00mil 2438.00mil 40.00mil 20.00mil ""]
+ Line[4473.00mil 2438.00mil 4666.00mil 2438.00mil 40.00mil 20.00mil ""]
+ Line[4666.00mil 2438.00mil 4666.00mil 64.6806mm 40.00mil 20.00mil ""]
+ Line[4470.00mil 85.8060mm 4529.00mil 84.3074mm 100.00mil 20.00mil ""]
+ Line[4529.00mil 84.3074mm 4529.00mil 3307.00mil 100.00mil 20.00mil ""]
+ Line[3710.00mil 2971.00mil 3710.00mil 2785.00mil 15.00mil 20.00mil ""]
+ Line[3345.00mil 2608.00mil 3380.00mil 2608.00mil 15.00mil 20.00mil ""]
+ Line[3360.00mil 2582.00mil 3567.00mil 2582.00mil 15.00mil 20.00mil ""]
+ Line[3567.00mil 2582.00mil 3580.00mil 2595.00mil 15.00mil 20.00mil ""]
+ Line[3710.00mil 2795.00mil 3710.00mil 2730.00mil 15.00mil 20.00mil "clearline"]
+ Line[3376.00mil 2608.00mil 3512.00mil 2608.00mil 15.00mil 20.00mil "clearline"]
+ Line[3512.00mil 2608.00mil 3549.00mil 2645.00mil 15.00mil 20.00mil "clearline"]
+ Line[3549.00mil 2645.00mil 3625.00mil 2645.00mil 15.00mil 20.00mil "clearline"]
+ Line[3625.00mil 2645.00mil 3710.00mil 2730.00mil 15.00mil 20.00mil "clearline"]
+ Line[3692.50mil 2712.50mil 3710.00mil 2730.00mil 15.00mil 20.00mil "clearline"]
+ Line[3710.00mil 2730.00mil 3710.00mil 2740.00mil 15.00mil 20.00mil "clearline"]
+ Line[3744.00mil 2710.00mil 92.7265mm 66.4629mm 15.00mil 20.00mil "clearline"]
+ Line[92.7265mm 66.4629mm 92.7265mm 66.4629mm 15.00mil 20.00mil "clearline"]
+ Line[3652.00mil 2618.00mil 3634.00mil 2600.00mil 15.00mil 20.00mil "clearline"]
+ Line[3634.00mil 2600.00mil 3632.00mil 2600.00mil 15.00mil 20.00mil "clearline"]
+ Line[3744.00mil 2819.00mil 3744.00mil 2710.00mil 15.00mil 20.00mil "clearline"]
+ Line[3630.00mil 2600.00mil 3585.00mil 2600.00mil 15.00mil 20.00mil "clearline"]
+ Line[118.4540mm 96.3080mm 3982.80mil 96.3080mm 3.1700mm 20.00mil "clearline"]
+ Line[3180.00mil 96.6694mm 81.8926mm 96.6694mm 10.00mil 20.00mil "clearline"]
+ Line[84.9434mm 97.1774mm 85.6772mm 97.1774mm 10.00mil 20.00mil "clearline"]
+ Line[84.9180mm 96.6694mm 83.1118mm 96.6694mm 10.00mil 20.00mil "clearline"]
+ Line[84.9434mm 98.1680mm 87.2266mm 98.1680mm 10.00mil 20.00mil "clearline"]
+ Line[87.2266mm 98.1680mm 3450.00mil 3849.00mil 10.00mil 20.00mil "clearline"]
+ Line[85.7474mm 97.1012mm 86.4507mm 96.3979mm 15.00mil 20.00mil "clearline"]
+ Line[82.3996mm 72.9000mm 85.5976mm 72.9000mm 100.00mil 20.00mil "clearline"]
+ Line[78.5618mm 72.9000mm 78.5892mm 2869.00mil 25.00mil 30.00mil "clearline"]
+ Line[78.5892mm 2869.00mil 3243.00mil 2869.00mil 25.00mil 30.00mil "clearline"]
+ Line[3253.00mil 2952.00mil 3247.00mil 2946.00mil 25.00mil 30.00mil ""]
+ Line[3258.00mil 2773.00mil 3439.00mil 2773.00mil 100.00mil 20.00mil ""]
+ Line[3435.00mil 2773.00mil 3440.00mil 2768.00mil 100.00mil 20.00mil ""]
+ Line[3440.00mil 2768.00mil 3444.00mil 2772.00mil 100.00mil 20.00mil ""]
+ Line[3281.00mil 2965.00mil 3343.00mil 2903.00mil 100.00mil 20.00mil ""]
+ Line[3343.00mil 2903.00mil 3377.00mil 2903.00mil 100.00mil 20.00mil ""]
+ Line[3452.00mil 2959.00mil 3309.00mil 2959.00mil 100.00mil 20.00mil ""]
+ Line[3446.00mil 2761.00mil 3446.00mil 2974.00mil 100.00mil 20.00mil ""]
+ Line[3258.00mil 2973.00mil 3260.00mil 2971.00mil 100.00mil 20.00mil ""]
+ Line[3384.00mil 2822.00mil 3395.00mil 2822.00mil 15.00mil 20.00mil ""]
+ Line[3395.00mil 2822.00mil 3398.00mil 2825.00mil 15.00mil 20.00mil ""]
+ Line[3260.00mil 2868.00mil 82.8060mm 72.8492mm 100.00mil 20.00mil "clearline"]
+ Line[3302.00mil 2973.00mil 3282.00mil 2953.00mil 100.00mil 20.00mil ""]
+ Line[3261.00mil 2980.00mil 3261.00mil 2777.00mil 100.00mil 20.00mil ""]
+ Line[97.7051mm 68.8192mm 99.5066mm 68.8192mm 15.00mil 20.00mil "clearline"]
+ Line[3855.00mil 2609.00mil 3782.00mil 2609.00mil 15.00mil 20.00mil ""]
+ Line[3782.00mil 2609.00mil 3713.00mil 2540.00mil 15.00mil 20.00mil ""]
+ Line[3847.50mil 2658.00mil 3783.00mil 2658.00mil 15.00mil 20.00mil ""]
+ Line[3783.00mil 2658.00mil 3655.00mil 2530.00mil 15.00mil 20.00mil ""]
+ Line[97.7707mm 2561.00mil 3919.00mil 2561.00mil 15.00mil 20.00mil "clearline"]
+ Line[4159.00mil 65.0056mm 105.6062mm 2558.00mil 15.00mil 20.00mil ""]
+ Line[105.6062mm 2558.00mil 4052.50mil 2558.00mil 15.00mil 20.00mil ""]
+ Line[4052.50mil 2608.00mil 4154.10mil 2608.00mil 15.00mil 20.00mil ""]
+ Line[4154.10mil 2608.00mil 105.6272mm 66.3562mm 15.00mil 20.00mil ""]
+ Line[4052.50mil 2658.00mil 102.9388mm 67.5079mm 15.00mil 20.00mil ""]
+ Line[102.9388mm 67.5079mm 105.6439mm 67.5079mm 15.00mil 20.00mil ""]
+ Line[4052.50mil 2708.00mil 105.7842mm 2708.00mil 15.00mil 20.00mil ""]
+ Line[105.7842mm 2708.00mil 105.8765mm 68.8755mm 15.00mil 20.00mil ""]
+ Line[97.7305mm 71.5510mm 96.2668mm 71.5510mm 15.00mil 20.00mil ""]
+ Line[96.2668mm 71.5510mm 3790.00mil 2817.00mil 15.00mil 20.00mil ""]
+ Line[3790.00mil 2817.00mil 3777.00mil 2804.00mil 15.00mil 20.00mil ""]
+ Line[3777.00mil 2804.00mil 3777.00mil 2777.00mil 15.00mil 20.00mil ""]
+ Line[97.6930mm 78.1700mm 96.3788mm 78.1700mm 15.00mil 20.00mil ""]
+ Line[96.3788mm 78.1700mm 3794.00mil 3078.00mil 15.00mil 20.00mil ""]
+ Line[3794.00mil 3078.00mil 3710.00mil 2994.00mil 15.00mil 20.00mil ""]
+ Line[3710.00mil 2994.00mil 3710.00mil 2966.00mil 15.00mil 20.00mil ""]
+ Line[106.9170mm 72.4130mm 106.9170mm 69.9160mm 15.00mil 20.00mil "clearline"]
+ Line[117.9310mm 92.7180mm 4363.00mil 92.7180mm 100.00mil 30.00mil ""]
+ Line[117.9792mm 110.1052mm 117.9792mm 96.2522mm 100.00mil 30.00mil ""]
+ Line[118.0046mm 96.3284mm 118.0250mm 96.3080mm 100.00mil 30.00mil ""]
+ Line[4091.00mil 108.5060mm 99.9264mm 4115.00mil 100.00mil 30.00mil ""]
+ Line[99.9264mm 4115.00mil 3869.00mil 4115.00mil 100.00mil 30.00mil ""]
+ Polygon("clearpoly")
+ (
+ [1660.00mil 2280.00mil] [1915.00mil 2280.00mil] [1915.00mil 2445.00mil] [1950.00mil 2480.00mil] [1950.00mil 2595.00mil]
+ [1660.00mil 2595.00mil]
+ )
+ Polygon("clearpoly")
+ (
+ [1710.00mil 4420.00mil] [3690.00mil 4420.00mil] [3690.00mil 4120.00mil] [3090.00mil 4120.00mil] [2880.00mil 3910.00mil]
+ [2740.00mil 3910.00mil] [75.0680mm 3910.00mil] [1710.00mil 3910.00mil]
+ )
+ Polygon("clearpoly")
+ (
+ [2060.00mil 2980.00mil] [2060.00mil 3460.00mil] [2660.00mil 3460.00mil] [2660.00mil 3070.00mil] [2570.00mil 2980.00mil]
+ )
+ Polygon("clearpoly")
+ (
+ [2550.00mil 3915.00mil] [2690.00mil 3775.00mil] [2865.00mil 3775.00mil] [2865.00mil 3915.00mil]
+ )
+ Polygon("clearpoly")
+ (
+ [4465.00mil 2618.00mil] [4577.00mil 2618.00mil] [4577.00mil 3346.00mil] [4465.00mil 3346.00mil]
+ )
+ Polygon("clearpoly")
+ (
+ [4598.00mil 2488.00mil] [4735.00mil 2488.00mil] [4735.00mil 3538.00mil] [4598.00mil 3538.00mil]
+ )
+ Polygon("clearpoly,fullpoly")
+ (
+ [3671.00mil 3040.00mil] [3671.00mil 2744.00mil] [3609.00mil 2682.00mil] [3504.00mil 2682.00mil] [3462.00mil 2640.00mil]
+ [3354.00mil 2640.00mil] [3354.00mil 2732.00mil] [3211.00mil 2732.00mil] [3211.00mil 3026.00mil] [3671.00mil 3026.00mil]
+ )
+ Polygon("clearpoly,fullpoly")
+ (
+ [3453.00mil 2999.00mil] [3211.00mil 2999.00mil] [3211.00mil 2741.00mil] [3453.00mil 2741.00mil]
+ )
+ Polygon("clearpoly,fullpoly")
+ (
+ [3211.00mil 2741.00mil] [3293.00mil 2741.00mil] [3293.00mil 2953.00mil] [3211.00mil 2953.00mil]
+ )
+)
+Layer(2 "bottom" "copper")
+(
+ Line[72.5280mm 84.4440mm 2860.00mil 3320.00mil 40.00mil 20.00mil "clearline"]
+ Line[77.6080mm 84.3390mm 3055.00mil 3320.00mil 40.00mil 20.00mil "clearline"]
+ Line[3055.00mil 3320.00mil 2860.00mil 3320.00mil 40.00mil 20.00mil "clearline"]
+ Line[56.5601mm 93.3312mm 55.3858mm 93.3312mm 25.00mil 20.00mil "clearline"]
+ Line[55.3858mm 93.3312mm 2165.00mil 3690.00mil 25.00mil 20.00mil "clearline"]
+ Line[2165.00mil 3690.00mil 2165.00mil 3740.00mil 25.00mil 20.00mil "clearline"]
+ Line[2165.00mil 3740.00mil 2195.00mil 3770.00mil 25.00mil 20.00mil "clearline"]
+ Line[59.2301mm 3845.00mil 59.2421mm 97.6510mm 25.00mil 20.00mil "clearline"]
+ Line[2250.00mil 3855.00mil 59.2301mm 3855.00mil 25.00mil 20.00mil "clearline"]
+ Line[61.0419mm 98.0320mm 61.9570mm 98.0320mm 25.00mil 20.00mil ""]
+ Line[61.9880mm 98.0320mm 62.3380mm 98.0320mm 25.00mil 20.00mil ""]
+ Line[62.3380mm 98.0320mm 64.3860mm 100.0800mm 25.00mil 20.00mil ""]
+ Line[2560.00mil 3755.00mil 2460.00mil 3755.00mil 15.00mil 20.00mil "clearline"]
+ Line[2325.00mil 3775.00mil 2325.00mil 3745.00mil 25.00mil 20.00mil "clearline"]
+ Line[2325.00mil 3745.00mil 2355.00mil 3715.00mil 25.00mil 20.00mil "clearline"]
+ Line[2355.00mil 3715.00mil 2355.00mil 3675.00mil 25.00mil 20.00mil "clearline"]
+ Line[2355.00mil 3675.00mil 2300.00mil 3675.00mil 25.00mil 20.00mil "clearline"]
+ Line[2090.00mil 3520.00mil 2325.00mil 3520.00mil 50.00mil 20.00mil "clearline"]
+ Line[2090.00mil 3585.00mil 2125.00mil 3585.00mil 50.00mil 20.00mil "clearline"]
+ Line[2125.00mil 3585.00mil 2150.00mil 3560.00mil 50.00mil 20.00mil "clearline"]
+ Line[2150.00mil 3560.00mil 2220.00mil 3560.00mil 50.00mil 20.00mil "clearline"]
+ Line[2090.00mil 3520.00mil 2090.00mil 3585.00mil 50.00mil 20.00mil "clearline"]
+ Line[2090.00mil 3585.00mil 2090.00mil 3580.00mil 50.00mil 20.00mil "clearline"]
+ Line[2090.00mil 3580.00mil 2130.00mil 3540.00mil 50.00mil 20.00mil "clearline"]
+ Line[69.8391mm 4010.00mil 2700.00mil 4010.00mil 15.00mil 20.00mil "clearline"]
+ Line[2700.00mil 4010.00mil 2670.00mil 3980.00mil 15.00mil 20.00mil "clearline"]
+ Line[2670.00mil 3980.00mil 2670.00mil 3946.10mil 15.00mil 20.00mil "clearline"]
+ Line[71.6389mm 4010.00mil 2885.00mil 4010.00mil 15.00mil 20.00mil "clearline"]
+ Line[2885.00mil 4010.00mil 2890.00mil 4015.00mil 15.00mil 20.00mil "clearline"]
+ Line[2645.00mil 3740.00mil 2645.00mil 3785.00mil 15.00mil 20.00mil ""]
+ Line[2645.00mil 3785.00mil 2650.00mil 3790.00mil 15.00mil 20.00mil ""]
+ Line[1950.00mil 2330.00mil 1995.00mil 2375.00mil 25.00mil 20.00mil ""]
+ Line[1950.00mil 2330.00mil 1985.00mil 2330.00mil 25.00mil 20.00mil ""]
+ Line[1945.00mil 2350.00mil 1995.00mil 2400.00mil 25.00mil 20.00mil ""]
+ Line[1950.00mil 2345.00mil 1990.00mil 2345.00mil 25.00mil 20.00mil ""]
+ Line[3225.00mil 4010.00mil 3285.00mil 4010.00mil 25.00mil 20.00mil "clearline"]
+ Line[3285.00mil 4010.00mil 3295.00mil 4020.00mil 25.00mil 20.00mil "clearline"]
+ Line[2735.00mil 3810.00mil 2735.00mil 3870.00mil 25.00mil 20.00mil "clearline"]
+ Line[2735.00mil 3870.00mil 2735.00mil 3865.00mil 25.00mil 20.00mil "clearline"]
+ Line[2735.00mil 3865.00mil 69.6085mm 98.0315mm 25.00mil 20.00mil "clearline"]
+ Line[69.6085mm 98.0315mm 75.0680mm 98.0315mm 25.00mil 20.00mil "clearline"]
+ Line[2735.00mil 3810.00mil 73.8105mm 3810.00mil 25.00mil 20.00mil "clearline"]
+ Line[73.8105mm 3810.00mil 75.0680mm 98.0315mm 25.00mil 20.00mil "clearline"]
+ Line[1595.00mil 3960.00mil 1595.00mil 4110.00mil 50.00mil 20.00mil ""]
+ Line[1680.00mil 4040.00mil 1520.00mil 4040.00mil 50.00mil 20.00mil ""]
+ Line[57.4000mm 78.6000mm 57.4000mm 80.8860mm 36.00mil 20.00mil "clearline"]
+ Line[62.1000mm 78.6000mm 62.1000mm 81.0130mm 36.00mil 20.00mil "clearline"]
+ Line[75.1000mm 95.2686mm 73.1686mm 97.2000mm 2.0000mm 20.00mil "clearline"]
+ Line[73.1686mm 97.2000mm 2735.00mil 97.2000mm 2.0000mm 20.00mil "clearline"]
+ Line[72.8140mm 89.4012mm 72.8140mm 84.6250mm 40.00mil 20.00mil "clearline"]
+ Line[72.8140mm 84.6250mm 2855.00mil 3320.00mil 40.00mil 20.00mil "clearline"]
+ Line[77.3860mm 89.4012mm 77.3860mm 84.6130mm 40.00mil 20.00mil "clearline"]
+ Line[77.3860mm 84.6130mm 77.6340mm 84.3650mm 40.00mil 20.00mil "clearline"]
+ Line[112.1310mm 75.4630mm 110.6700mm 74.0020mm 15.00mil 20.00mil "clearline"]
+ Line[110.6700mm 74.0020mm 108.2790mm 74.0020mm 15.00mil 20.00mil "clearline"]
+ Line[108.2790mm 74.0020mm 107.1440mm 72.8670mm 15.00mil 20.00mil "clearline"]
+ Line[107.1440mm 72.8670mm 107.1440mm 71.6440mm 15.00mil 20.00mil "clearline"]
+ Line[107.1440mm 71.6440mm 105.8300mm 70.3300mm 15.00mil 20.00mil "clearline"]
+ Line[103.4999mm 65.0000mm 103.2000mm 64.7001mm 15.00mil 20.00mil "clearline"]
+ Line[104.8000mm 65.0000mm 103.4999mm 65.0000mm 15.00mil 20.00mil "clearline"]
+ Line[103.3999mm 66.3000mm 103.2000mm 66.4999mm 15.00mil 20.00mil "clearline"]
+ Line[104.8000mm 66.3000mm 103.3999mm 66.3000mm 15.00mil 20.00mil "clearline"]
+ Line[103.4000mm 71.6000mm 103.2000mm 71.8000mm 15.00mil 20.00mil "clearline"]
+ Line[105.4000mm 71.6000mm 103.4000mm 71.6000mm 15.00mil 20.00mil "clearline"]
+ Line[103.5298mm 70.3300mm 103.2000mm 70.0002mm 15.00mil 20.00mil "clearline"]
+ Line[4128.90mil 70.3300mm 103.5298mm 70.3300mm 15.00mil 20.00mil "clearline"]
+ Line[105.8300mm 70.3300mm 104.8340mm 70.3300mm 15.00mil 20.00mil "clearline"]
+ Line[106.0059mm 92.7180mm 117.9420mm 92.7180mm 100.00mil 20.00mil ""]
+ Line[106.9178mm 102.1420mm 104.4540mm 102.1420mm 100.00mil 20.00mil ""]
+ Line[107.0448mm 102.0150mm 106.9178mm 102.1420mm 100.00mil 20.00mil "clearline"]
+ Line[117.9160mm 102.1420mm 117.9160mm 3789.80mil 100.00mil 20.00mil "clearline"]
+ Line[112.7090mm 102.1420mm 117.9160mm 102.1420mm 100.00mil 20.00mil "clearline"]
+ Line[112.5820mm 102.0150mm 112.7090mm 102.1420mm 100.00mil 20.00mil "clearline"]
+ Line[110.9259mm 96.3790mm 117.9259mm 96.3790mm 40.00mil 20.00mil "clearline"]
+ Line[111.0250mm 96.3790mm 117.9259mm 96.3790mm 100.00mil 20.00mil "clearline"]
+ Line[3918.00mil 2563.00mil 3887.00mil 2594.00mil 15.00mil 20.00mil "clearline"]
+ Line[3887.00mil 2594.00mil 3844.00mil 2594.00mil 15.00mil 20.00mil "clearline"]
+ Line[97.8965mm 71.3351mm 98.4639mm 71.3351mm 15.00mil 20.00mil "clearline"]
+ Line[98.4639mm 71.3351mm 3919.00mil 2766.00mil 15.00mil 20.00mil "clearline"]
+ Line[3918.00mil 2977.00mil 3879.00mil 3016.00mil 15.00mil 20.00mil "clearline"]
+ Line[3879.00mil 3016.00mil 3840.00mil 3016.00mil 15.00mil 20.00mil "clearline"]
+ Line[3920.00mil 2710.00mil 98.4689mm 67.7349mm 15.00mil 20.00mil ""]
+ Line[98.4689mm 67.7349mm 97.5965mm 67.7349mm 15.00mil 20.00mil "clearline"]
+ Line[97.5965mm 78.4349mm 98.5263mm 78.4349mm 15.00mil 20.00mil "clearline"]
+ Line[98.5263mm 78.4349mm 3919.00mil 3128.00mil 15.00mil 20.00mil ""]
+ Line[3920.00mil 2918.00mil 98.5857mm 73.1349mm 15.00mil 20.00mil ""]
+ Line[98.5857mm 73.1349mm 97.8965mm 73.1349mm 15.00mil 20.00mil "clearline"]
+ Line[3842.00mil 78.4349mm 3842.00mil 3173.00mil 45.00mil 20.00mil ""]
+ Line[3918.50mil 2976.50mil 3877.00mil 3018.00mil 45.00mil 20.00mil "clearline"]
+ Line[3877.00mil 3018.00mil 3844.00mil 3018.00mil 45.00mil 20.00mil "clearline"]
+ Line[3918.00mil 2977.00mil 3950.00mil 2977.00mil 45.00mil 20.00mil "clearline"]
+ Line[3950.00mil 2977.00mil 3972.00mil 2955.00mil 45.00mil 20.00mil "clearline"]
+ Line[2647.00mil 2432.00mil 2729.00mil 2514.00mil 15.00mil 20.00mil "clearline"]
+ Line[2729.00mil 2514.00mil 3098.00mil 2514.00mil 15.00mil 20.00mil "clearline"]
+ Line[3575.00mil 2590.00mil 3555.00mil 2570.00mil 15.00mil 20.00mil "clearline"]
+ Line[3555.00mil 2570.00mil 3480.00mil 2570.00mil 15.00mil 20.00mil "clearline"]
+ Line[3347.00mil 2432.00mil 3345.00mil 2434.00mil 15.00mil 20.00mil "clearline"]
+ Line[3345.00mil 2434.00mil 3345.00mil 2570.00mil 15.00mil 20.00mil "clearline"]
+ Line[3345.00mil 2570.00mil 86.5922mm 2570.00mil 15.00mil 20.00mil "clearline"]
+ Polygon("clearpoly")
+ (
+ [1915.00mil 2280.00mil] [1915.00mil 2420.00mil] [1950.00mil 2455.00mil] [1950.00mil 2595.00mil] [1660.00mil 2595.00mil]
+ [1660.00mil 2280.00mil]
+ )
+ Polygon("clearpoly")
+ (
+ [118.7210mm 57.8850mm] [3700.00mil 2280.00mil] [1970.00mil 2280.00mil] [1970.00mil 2620.00mil] [1450.00mil 2620.00mil]
+ [1450.00mil 4160.00mil] [1710.00mil 4160.00mil] [1710.00mil 4420.00mil] [3690.00mil 4420.00mil] [3690.00mil 4240.00mil]
+ [3770.00mil 4160.00mil] [4220.00mil 4160.00mil] [4220.00mil 3390.00mil] [4670.00mil 3390.00mil] [4670.00mil 2590.00mil]
+ )
+)
+Layer(3 "mechanical" "copper")
+(
+ Line[36.0000mm 53.0000mm 36.0000mm 119.5000mm 10.00mil 20.00mil "clearline"]
+ Line[33.0000mm 57.0000mm 129.5000mm 57.0000mm 10.00mil 20.00mil "clearline"]
+ Line[36.0000mm 110.0000mm 34.0000mm 110.0000mm 6.00mil 12.00mil "clearline"]
+ Line[121.0000mm 60.0000mm 123.5000mm 60.0000mm 6.00mil 12.00mil "clearline"]
+ Line[121.0000mm 110.0000mm 124.5000mm 110.0000mm 6.00mil 12.00mil "clearline"]
+ Line[39.5000mm 109.5000mm 39.5000mm 116.5000mm 6.00mil 12.00mil "clearline"]
+ Line[39.5000mm 109.5000mm 32.0000mm 109.5000mm 6.00mil 12.00mil "clearline"]
+ Line[36.0000mm 118.5000mm 36.5000mm 118.0000mm 6.00mil 12.00mil "clearline"]
+ Line[36.0000mm 118.5000mm 36.5000mm 119.0000mm 6.00mil 12.00mil "clearline"]
+ Line[30.5000mm 113.0000mm 129.5000mm 113.0000mm 10.00mil 20.00mil "clearline"]
+ Line[97.5000mm 109.5000mm 97.5000mm 116.5000mm 6.00mil 12.00mil "clearline"]
+ Line[39.5000mm 60.5000mm 33.0000mm 60.5000mm 6.00mil 12.00mil "clearline"]
+ Line[1747.00mil 2432.00mil 44.1466mm 62.0000mm 6.00mil 12.00mil "clearline"]
+ Line[1747.00mil 2432.00mil 32.7728mm 2432.00mil 6.00mil 12.00mil "clearline"]
+ Line[121.0012mm 53.4270mm 121.0012mm 119.9270mm 10.00mil 20.00mil "clearline,lock"]
+ Text[38.0000mm 116.5000mm 0 100 "3.5mm" "clearline"]
+ Text[34.5000mm 120.0000mm 0 100 "0mm" "clearline"]
+ Text[27.0000mm 112.5000mm 0 100 "0mm" "clearline"]
+ Text[96.0000mm 116.5000mm 0 100 "61.5mm" "clearline"]
+ Text[27.5000mm 109.0000mm 0 100 "3.5mm" "clearline"]
+ Text[27.5000mm 56.5000mm 0 100 "56.0mm" "clearline"]
+ Text[27.5000mm 59.5000mm 0 100 "52.5mm" "clearline"]
+ Text[4698.00mil 4739.00mil 0 98 "85mm" "clearline"]
+)
+Layer(4 "ground" "copper")
+(
+)
+Layer(5 "power" "copper")
+(
+)
+Layer(6 "outline" "copper")
+(
+ Line[36.0000mm 60.0000mm 36.0000mm 110.0000mm 6.00mil 12.00mil "clearline"]
+ Line[39.0000mm 113.0000mm 118.0000mm 113.0000mm 6.00mil 12.00mil "clearline"]
+ Line[121.0000mm 110.0000mm 121.0000mm 60.0000mm 6.00mil 12.00mil "clearline"]
+ Line[118.0000mm 57.0000mm 39.0000mm 57.0000mm 6.00mil 12.00mil "clearline"]
+ Arc[39.0000mm 60.0000mm 3.0000mm 3.0000mm 6.00mil 12.00mil 0.000000 -90.000000 "clearline"]
+ Arc[118.0000mm 60.0000mm 3.0000mm 3.0000mm 6.00mil 12.00mil -90.000000 -90.000000 "clearline"]
+ Arc[118.0000mm 110.0000mm 3.0000mm 3.0000mm 6.00mil 12.00mil 180.000000 -90.000000 "clearline"]
+ Arc[39.0000mm 110.0000mm 3.0000mm 3.0000mm 6.00mil 12.00mil 0.000000 90.000000 "clearline"]
+)
+Layer(7 "bottom silk" "silk")
+(
+ Text[4251.00mil 3616.00mil 2 100 "COM" "clearline,onsolder"]
+ Text[4267.00mil 3770.00mil 2 100 "V_IN" "clearline,onsolder"]
+)
+Layer(8 "top silk" "silk")
+(
+ Line[3455.00mil 4390.00mil 3455.00mil 4065.00mil 6.00mil 12.00mil "found,clearline"]
+ Line[3455.00mil 4065.00mil 3435.00mil 4085.00mil 6.00mil 12.00mil "found,clearline"]
+ Line[3455.00mil 4065.00mil 3475.00mil 4085.00mil 6.00mil 12.00mil "found,clearline"]
+ Line[2345.00mil 2710.00mil 2405.00mil 2710.00mil 10.00mil 20.00mil "clearline"]
+ Line[69.5666mm 77.3662mm 71.0906mm 77.3662mm 10.00mil 20.00mil "clearline"]
+ Line[115.8730mm 102.3768mm 115.8730mm 98.8768mm 6.00mil 12.00mil "clearline"]
+ Line[115.8730mm 98.8768mm 115.3730mm 99.3768mm 6.00mil 12.00mil "clearline"]
+ Line[115.8730mm 98.8768mm 116.3730mm 99.3768mm 6.00mil 12.00mil "clearline"]
+ Line[4235.00mil 2553.00mil 4355.00mil 2553.00mil 6.00mil 12.00mil ""]
+ Line[4355.00mil 2553.00mil 4380.00mil 2578.00mil 6.00mil 12.00mil ""]
+ Line[4270.00mil 2414.00mil 4351.00mil 2414.00mil 6.00mil 12.00mil ""]
+ Line[4351.00mil 2414.00mil 4387.00mil 2450.00mil 6.00mil 12.00mil ""]
+ Text[2305.00mil 3940.00mil 0 100 "+" "clearline"]
+ Text[2660.00mil 3785.00mil 0 100 "+" "clearline"]
+ Text[2915.00mil 4010.00mil 0 100 "+" "clearline"]
+ Text[4062.00mil 3353.00mil 0 100 "+" "clearline"]
+ Text[1925.00mil 2875.00mil 0 100 "+" "clearline"]
+ Text[1710.00mil 4100.00mil 0 100 "V_MID" "clearline"]
+ Text[1540.00mil 4095.00mil 0 100 "COM" "clearline"]
+ Text[1730.00mil 2650.00mil 0 100 "+5V" "clearline"]
+ Text[58.9285mm 72.7982mm 0 100 "+5V" "clearline"]
+ Text[44.5590mm 109.5840mm 0 100 "REV 3" "clearline"]
+ Text[44.4320mm 107.4250mm 0 100 "971 PI4 POWER" "clearline"]
+ Text[37.4750mm 67.2100mm 0 100 "COM" "clearline"]
+ Text[66.6272mm 74.3936mm 0 100 "V_MID" "clearline"]
+ Text[101.8060mm 96.1060mm 0 100 "V_IN" "clearline"]
+ Text[116.8060mm 100.6060mm 0 100 "V_IN" "clearline"]
+ Text[117.0030mm 98.6620mm 0 100 "COM" "clearline"]
+ Text[3473.00mil 2917.00mil 1 97 "U404" "clearline"]
+ Text[4389.00mil 3263.00mil 0 100 "H" "clearline"]
+ Text[4298.00mil 3263.00mil 0 100 "L" "clearline"]
+ Text[4182.00mil 2704.00mil 0 100 "DR" "clearline"]
+ Text[4187.00mil 3177.00mil 0 100 "CS" "clearline"]
+ Text[4164.00mil 2526.00mil 0 100 "5V" "clearline"]
+ Text[4949.00mil 2359.00mil 0 100 "G" "clearline"]
+ Text[4162.00mil 2384.00mil 0 100 "12V" "clearline"]
+ Text[4150.00mil 2469.00mil 0 100 "GND" "clearline"]
+ Text[4152.00mil 2588.00mil 0 100 "GND" "clearline"]
+ Text[4127.00mil 2940.00mil 0 100 "MISO" "clearline"]
+ Text[4156.00mil 3059.00mil 0 100 "SCK" "clearline"]
+ Text[4128.00mil 2822.00mil 0 100 "MOSI" "clearline"]
+ Text[2015.00mil 4315.00mil 0 100 "2022" "clearline"]
+)
+NetList()
+(
+ Net("+3.3V" "(unknown)")
+ (
+ Connect("C401-2")
+ Connect("C402-2")
+ Connect("C403-2")
+ Connect("C404-2")
+ Connect("U401-1")
+ Connect("U402-1")
+ Connect("U403-1")
+ Connect("U404-2")
+ Connect("U404-4")
+ )
+ Net("+5V" "(unknown)")
+ (
+ Connect("C203-2")
+ Connect("C204-1")
+ Connect("C405-2")
+ Connect("J200-2")
+ Connect("J200-4")
+ Connect("J401-2")
+ Connect("L200-2")
+ Connect("R201-2")
+ Connect("TP201-1")
+ Connect("U200-6")
+ Connect("U404-3")
+ )
+ Net("+VMID" "(unknown)")
+ (
+ Connect("C106-2")
+ Connect("C107-2")
+ Connect("C108-1")
+ Connect("C109-1")
+ Connect("C200-1")
+ Connect("C201-2")
+ Connect("D102-4")
+ Connect("D103-4")
+ Connect("R101-1")
+ Connect("R107-2")
+ Connect("R200-2")
+ Connect("TP101-1")
+ Connect("U200-2")
+ )
+ Net("COM" "(unknown)")
+ (
+ Connect("C100-2")
+ Connect("C101-1")
+ Connect("C102-1")
+ Connect("C103-1")
+ Connect("C105-1")
+ Connect("C106-1")
+ Connect("C107-1")
+ Connect("C108-2")
+ Connect("C109-2")
+ Connect("C110-1")
+ Connect("C200-2")
+ Connect("C201-1")
+ Connect("C203-1")
+ Connect("C204-2")
+ Connect("C401-1")
+ Connect("C402-1")
+ Connect("C403-1")
+ Connect("C404-1")
+ Connect("C405-1")
+ Connect("D100-1")
+ Connect("D101-1")
+ Connect("D104-2")
+ Connect("D201-1")
+ Connect("D201-3")
+ Connect("D202-2")
+ Connect("J1-2")
+ Connect("J200-6")
+ Connect("J200-9")
+ Connect("J200-14")
+ Connect("J200-20")
+ Connect("J200-25")
+ Connect("J200-34")
+ Connect("J200-39")
+ Connect("J401-8")
+ Connect("J401-9")
+ Connect("R102-1")
+ Connect("R103-1")
+ Connect("R104-1")
+ Connect("R105-1")
+ Connect("R106-1")
+ Connect("TP102-1")
+ Connect("TP202-1")
+ Connect("U100-6")
+ Connect("U200-4")
+ Connect("U200-8")
+ Connect("U401-4")
+ Connect("U402-4")
+ Connect("U403-4")
+ Connect("U404-1")
+ )
+ Net("CS" "(unknown)")
+ (
+ Connect("J200-24")
+ Connect("U403-3")
+ )
+ Net("DR" "(unknown)")
+ (
+ Connect("J200-32")
+ Connect("U401-2")
+ )
+ Net("MISO" "(unknown)")
+ (
+ Connect("J200-21")
+ Connect("U402-2")
+ )
+ Net("MOSI" "(unknown)")
+ (
+ Connect("J200-19")
+ Connect("U401-3")
+ )
+ Net("SCK" "(unknown)")
+ (
+ Connect("J200-23")
+ Connect("R202-2")
+ Connect("U402-3")
+ )
+ Net("unnamed_net1" "(unknown)")
+ (
+ Connect("R105-2")
+ Connect("U100-4")
+ )
+ Net("unnamed_net2" "(unknown)")
+ (
+ Connect("C104-1")
+ Connect("R103-2")
+ )
+ Net("unnamed_net3" "(unknown)")
+ (
+ Connect("C103-2")
+ Connect("C104-2")
+ Connect("U100-2")
+ )
+ Net("unnamed_net4" "(unknown)")
+ (
+ Connect("C102-2")
+ Connect("D101-2")
+ Connect("R100-1")
+ Connect("R102-2")
+ Connect("U100-1")
+ )
+ Net("unnamed_net5" "(unknown)")
+ (
+ Connect("D103-1")
+ Connect("D103-3")
+ Connect("L100-2")
+ Connect("Q100-5")
+ Connect("Q100-6")
+ Connect("Q100-7")
+ Connect("Q100-8")
+ )
+ Net("unnamed_net6" "(unknown)")
+ (
+ Connect("Q100-1")
+ Connect("Q100-2")
+ Connect("Q100-3")
+ Connect("R106-2")
+ Connect("U100-10")
+ )
+ Net("unnamed_net7" "(unknown)")
+ (
+ Connect("Q100-4")
+ Connect("U100-7")
+ )
+ Net("unnamed_net8" "(unknown)")
+ (
+ Connect("R101-2")
+ Connect("R104-2")
+ Connect("U100-3")
+ )
+ Net("unnamed_net9" "(unknown)")
+ (
+ Connect("C105-2")
+ Connect("U100-5")
+ Connect("U100-8")
+ )
+ Net("unnamed_net10" "(unknown)")
+ (
+ Connect("D104-1")
+ Connect("R107-1")
+ )
+ Net("unnamed_net11" "(unknown)")
+ (
+ Connect("C202-1")
+ Connect("D201-4")
+ Connect("L200-1")
+ Connect("U200-1")
+ )
+ Net("unnamed_net12" "(unknown)")
+ (
+ Connect("C202-2")
+ Connect("U200-3")
+ )
+ Net("unnamed_net13" "(unknown)")
+ (
+ Connect("R200-1")
+ Connect("U200-7")
+ )
+ Net("unnamed_net14" "(unknown)")
+ (
+ Connect("J200-33")
+ Connect("R202-1")
+ )
+ Net("unnamed_net15" "(unknown)")
+ (
+ Connect("D202-1")
+ Connect("R201-1")
+ )
+ Net("unnamed_net16" "(unknown)")
+ (
+ Connect("J401-3")
+ Connect("R401-2")
+ Connect("U401-8")
+ )
+ Net("unnamed_net17" "(unknown)")
+ (
+ Connect("J401-10")
+ Connect("R401-1")
+ Connect("U401-7")
+ )
+ Net("unnamed_net18" "(unknown)")
+ (
+ Connect("J401-5")
+ Connect("R402-2")
+ Connect("U402-8")
+ )
+ Net("unnamed_net19" "(unknown)")
+ (
+ Connect("J401-12")
+ Connect("R402-1")
+ Connect("U402-7")
+ )
+ Net("unnamed_net20" "(unknown)")
+ (
+ Connect("J401-11")
+ Connect("U401-6")
+ )
+ Net("unnamed_net21" "(unknown)")
+ (
+ Connect("J401-4")
+ Connect("U401-5")
+ )
+ Net("unnamed_net22" "(unknown)")
+ (
+ Connect("J401-13")
+ Connect("U402-6")
+ )
+ Net("unnamed_net23" "(unknown)")
+ (
+ Connect("J401-14")
+ Connect("U403-6")
+ )
+ Net("unnamed_net24" "(unknown)")
+ (
+ Connect("J401-6")
+ Connect("U402-5")
+ )
+ Net("unnamed_net25" "(unknown)")
+ (
+ Connect("J401-7")
+ Connect("U403-5")
+ )
+ Net("V_IN" "(unknown)")
+ (
+ Connect("C100-1")
+ Connect("C101-2")
+ Connect("C110-2")
+ Connect("D100-2")
+ Connect("D102-1")
+ Connect("D102-3")
+ Connect("J1-1")
+ Connect("J401-1")
+ Connect("L100-1")
+ Connect("R100-2")
+ Connect("TP100-1")
+ Connect("U100-9")
+ )
+)
diff --git a/motors/RspBuckBoostv3/RspPiPs.gsch2pcb b/motors/RspBuckBoostv3/RspPiPs.gsch2pcb
new file mode 100644
index 0000000..541dd65
--- /dev/null
+++ b/motors/RspBuckBoostv3/RspPiPs.gsch2pcb
@@ -0,0 +1,3 @@
+schematics rspBoost.sch rspBuck-2.sch rspIMU.sch
+output-name RspPiPS
+use-files
diff --git a/motors/RspBuckBoostv3/rspBoost.sch b/motors/RspBuckBoostv3/rspBoost.sch
new file mode 100644
index 0000000..d06553a
--- /dev/null
+++ b/motors/RspBuckBoostv3/rspBoost.sch
@@ -0,0 +1,686 @@
+v 20200319 2
+C 40000 40000 0 0 0 title-B.sym
+C 47300 42500 1 90 0 resistor-1.sym
+{
+T 46900 42800 5 10 0 0 90 0 1
+device=RESISTOR
+T 47100 42600 5 10 1 1 90 0 1
+refdes=R105
+T 47100 43000 5 10 0 1 90 0 1
+footprint=0805
+T 47500 42500 5 10 1 1 90 0 1
+value=80.6k 1%
+T 47300 42500 5 10 0 0 0 0 1
+pn=RC0805FR-0780K6L
+T 47300 42500 5 10 0 0 0 0 1
+mfg=Yageo
+}
+N 47200 43400 47200 43500 4
+N 47200 43500 47500 43500 4
+N 46300 44100 47500 44100 4
+C 45600 42500 1 90 0 resistor-1.sym
+{
+T 45200 42800 5 10 0 0 90 0 1
+device=RESISTOR
+T 45400 42600 5 10 1 1 90 0 1
+refdes=R103
+T 45400 43000 5 10 0 1 90 0 1
+footprint=0805
+T 45800 42600 5 10 1 1 90 0 1
+value=22.0k 1%
+T 45600 42500 5 10 0 0 0 0 1
+pn=RC0805FR-0722KL
+T 45600 42500 5 10 0 0 0 0 1
+mfg=Yageo
+}
+C 45700 43400 1 90 0 capacitor-1.sym
+{
+T 45000 43600 5 10 0 0 90 0 1
+device=CAPACITOR
+T 45900 43700 5 10 1 1 90 0 1
+refdes=C104
+T 44800 43600 5 10 0 0 90 0 1
+symversion=0.1
+T 45700 43400 5 10 0 0 0 0 1
+footprint=0805
+T 45300 43400 5 10 1 1 90 0 1
+value=6.8nF 10%
+T 45700 43400 5 10 0 0 0 0 1
+pn=C0805C682K5RACTU
+T 45700 43400 5 10 0 0 0 0 1
+mfg=Kemet
+}
+N 45500 44300 45500 44400 4
+N 44800 44400 47500 44400 4
+C 45000 42900 1 90 0 capacitor-1.sym
+{
+T 44300 43100 5 10 0 0 90 0 1
+device=CAPACITOR
+T 45000 43500 5 10 1 1 90 0 1
+refdes=C103
+T 44100 43100 5 10 0 0 90 0 1
+symversion=0.1
+T 45000 42900 5 10 0 0 0 0 1
+footprint=0805
+T 44600 42900 5 10 1 1 90 0 1
+value=22pF 5%
+T 45000 42900 5 10 0 0 0 0 1
+pn=C0805C220J5GACTU
+T 45000 42900 5 10 0 0 0 0 1
+mfg=Kemet
+}
+N 44800 43800 44800 44400 4
+N 44800 42500 44800 42900 4
+N 49800 43500 50000 43500 4
+N 50000 43500 50000 42500 4
+N 50500 42700 50500 42500 4
+N 49800 43800 50500 43800 4
+N 50500 43600 50500 44100 4
+C 44200 42500 1 90 0 resistor-1.sym
+{
+T 43800 42800 5 10 0 0 90 0 1
+device=RESISTOR
+T 44000 43000 5 10 0 1 90 0 1
+footprint=0805
+T 44000 42600 5 10 1 1 90 0 1
+refdes=R102
+T 44400 42600 5 10 1 1 90 0 1
+value=10.0k 1%
+T 44200 42500 5 10 0 0 0 0 1
+pn=RC0805FR-0710KL
+T 44200 42500 5 10 0 0 0 0 1
+mfg=Yageo
+}
+N 44100 43400 44100 44800 4
+C 44200 44800 1 90 0 resistor-1.sym
+{
+T 43800 45100 5 10 0 0 90 0 1
+device=RESISTOR
+T 44000 45300 5 10 0 1 90 0 1
+footprint=0805
+T 44000 44900 5 10 1 1 90 0 1
+refdes=R100
+T 44400 44900 5 10 1 1 90 0 1
+value=26.1k 1%
+T 44200 44800 5 10 0 0 0 0 1
+pn=RC0805FR-0726K1L
+T 44200 44800 5 10 0 0 0 0 1
+mfg=Yageo
+}
+N 44100 44700 47500 44700 4
+C 42400 43400 1 90 0 capacitor-1.sym
+{
+T 41700 43600 5 10 0 0 90 0 1
+device=CAPACITOR
+T 42200 44100 5 10 1 1 90 0 1
+refdes=C101
+T 41500 43600 5 10 0 0 90 0 1
+symversion=0.1
+T 42400 43400 5 10 0 0 0 0 1
+footprint=0805
+T 42000 43400 5 10 1 1 90 0 1
+value=4.7uF 10%
+T 42400 43400 5 10 0 0 0 0 1
+pn=GRM219R6YA475KA73D
+T 42400 43400 5 10 0 0 0 0 1
+mfg=Murata
+}
+N 42200 42500 42200 43400 4
+N 42200 44300 42200 46200 4
+N 40500 46200 49400 46200 4
+N 47500 45000 47200 45000 4
+N 47200 45000 47200 46200 4
+N 44100 45700 44100 46200 4
+C 40600 44300 1 270 0 capacitor-2.sym
+{
+T 41300 44100 5 10 0 0 270 0 1
+device=POLARIZED_CAPACITOR
+T 40800 44100 5 10 1 1 90 0 1
+refdes=C100
+T 41500 44100 5 10 0 0 270 0 1
+symversion=0.1
+T 40600 43400 5 10 1 1 90 0 1
+value=68uF 25V
+T 40600 44300 5 10 0 0 0 0 1
+footprint=CAP8
+T 40600 44300 5 10 0 0 0 0 1
+pn=870025574003
+T 40600 44300 5 10 0 0 0 0 1
+mfg=Wurth Electronik
+}
+N 40800 44300 40800 46200 4
+N 40800 43400 40800 42500 4
+C 41000 42500 1 180 0 generic-power.sym
+{
+T 40800 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+C 49900 44000 1 0 0 Si4842DY-1.sym
+{
+T 52000 45200 5 10 0 0 0 0 1
+device=N-MOSFET
+T 51700 45000 5 10 1 1 0 0 1
+refdes=Q100
+T 50900 45050 5 6 1 1 0 0 1
+pinlabel=4
+T 51595 45195 5 10 1 1 0 0 1
+value=Si4842BDY
+T 50700 44600 5 10 0 0 0 0 1
+footprint=SO8
+T 49900 44000 5 10 0 0 0 0 1
+pn=Si4842BDY
+T 49900 44000 5 10 0 0 0 0 1
+mfg=Vishay Siliconix
+}
+N 49800 45000 50800 45000 4
+N 51300 44300 51300 44500 4
+N 51400 44500 51400 44300 4
+N 51300 44300 51500 44300 4
+N 51500 44300 51500 44500 4
+N 51200 45700 51200 45500 4
+N 51200 45700 51500 45700 4
+N 51300 45700 51300 45500 4
+N 51400 45700 51400 45500 4
+N 51500 45500 51500 46200 4
+C 51500 42900 1 90 0 resistor-1.sym
+{
+T 51100 43200 5 10 0 0 90 0 1
+device=RESISTOR
+T 51300 43000 5 10 1 1 90 0 1
+refdes=R106
+T 51300 43400 5 10 0 1 90 0 1
+footprint=1206
+T 51600 43000 5 10 1 1 90 0 1
+value=10 mOhm
+T 51500 42900 5 10 0 0 0 0 1
+pn=WSL1206R0100FEA
+T 51500 42900 5 10 0 0 0 0 1
+mfg=Vishay-Dale
+}
+N 51400 43800 51400 44300 4
+N 51400 44000 50900 44000 4
+N 50900 44000 50900 44400 4
+N 49800 44100 50500 44100 4
+N 49800 44400 50900 44400 4
+C 49400 46100 1 0 0 inductor-1.sym
+{
+T 49600 46600 5 10 0 0 0 0 1
+device=INDUCTOR
+T 49600 46400 5 10 1 1 0 0 1
+refdes=L100
+T 49600 46800 5 10 0 0 0 0 1
+symversion=0.1
+T 49400 46100 5 10 0 0 0 0 1
+footprint=SPM12565XT
+T 49600 46000 5 10 1 1 0 0 1
+value=2.8uH
+T 49400 46100 5 10 0 0 0 0 1
+pn=SPM12565XT-2R8M150
+T 49400 46100 5 10 0 0 0 0 1
+mfg=TDK
+}
+N 50300 46200 51900 46200 4
+N 51400 42500 51400 42900 4
+N 51900 46000 51900 46200 4
+C 53900 44100 1 90 0 capacitor-1.sym
+{
+T 53200 44300 5 10 0 0 90 0 1
+device=CAPACITOR
+T 53600 45200 5 10 1 1 180 0 1
+refdes=C106
+T 53000 44300 5 10 0 0 90 0 1
+symversion=0.1
+T 53900 44100 5 10 0 0 0 0 1
+footprint=0805
+T 53500 44100 5 10 1 1 90 0 1
+value=0.1uF 10%
+T 53900 44100 5 10 0 0 0 0 1
+pn=GMK212BJ104KGHT
+T 53900 44100 5 10 0 0 0 0 1
+mfg=Taiyo Yuden
+}
+N 51400 42700 55500 42700 4
+N 55500 42400 55500 44100 4
+N 54900 44100 54900 42700 4
+N 54900 42700 54300 42700 4
+N 54300 44100 54300 42700 4
+N 53700 44100 53700 42700 4
+N 53700 45000 53700 46200 4
+N 52800 46200 56200 46200 4
+N 54300 45000 54300 46200 4
+N 54900 45000 54900 46200 4
+N 55500 45000 55500 46200 4
+N 46300 46700 53200 46700 4
+N 53200 46700 53200 46200 4
+C 49600 47300 1 0 0 MBRB4030G-1.sym
+{
+T 50800 48400 5 10 0 0 0 0 1
+device=V35PW60-M3/I
+T 49900 47900 5 10 1 1 0 0 1
+refdes=D102
+T 50095 47850 5 10 0 1 0 0 1
+footprint=TO252AE
+T 49595 47150 5 10 1 1 0 0 1
+value=V35PW60-M3/I
+T 49600 47300 5 10 0 0 0 0 1
+pn=V35PW60-M3/I
+T 49600 47300 5 10 0 0 0 0 1
+mfg=Vishay
+}
+N 49600 47600 45800 47600 4
+N 45800 47600 45800 46200 4
+N 49600 47400 49600 47600 4
+N 50500 47600 54600 47600 4
+N 54600 47600 54600 46200 4
+N 56200 46200 56200 46700 4
+C 56000 46700 1 0 0 generic-power.sym
+{
+T 56200 46950 5 10 1 1 0 3 1
+net=+VMID:1
+}
+T 50500 40700 9 10 1 0 0 0 1
+Raspberry PI 4B Boost Converter
+T 54000 40100 9 10 1 0 0 0 1
+Scott Berman
+T 41900 40700 9 10 1 0 0 0 4
+Boost converter for supplying power to
+Raspberry PI 4B. Output Voltage set to 10V.
+2A. Input range 4.5V to 20V. Boost active
+4.5V to 10V.
+T 41900 40200 9 10 1 0 0 0 1
+Switching frequency: 300 kHz
+C 43800 42500 1 90 0 capacitor-1.sym
+{
+T 43100 42700 5 10 0 0 90 0 1
+device=CAPACITOR
+T 43800 43100 5 10 1 1 90 0 1
+refdes=C102
+T 42900 42700 5 10 0 0 90 0 1
+symversion=0.1
+T 43800 42500 5 10 0 0 0 0 1
+footprint=0805
+T 43400 42600 5 10 1 1 90 0 1
+value=10nF 10%
+T 43800 42500 5 10 0 0 0 0 1
+pn=C0805C103K3RACTU
+T 43800 42500 5 10 0 0 0 0 1
+mfg=Kemet
+}
+C 43000 42500 1 90 0 zener-1.sym
+{
+T 42400 42900 5 10 0 0 90 0 1
+device=ZENER_DIODE
+T 42500 42800 5 10 1 1 90 0 1
+refdes=D101
+T 43200 42800 5 10 1 1 90 0 1
+value=5.6V
+T 43000 42500 5 10 0 0 0 0 1
+footprint=DO214AC
+T 43000 42500 5 10 0 0 0 0 1
+pn=3SMAJ5919B-TP
+T 43000 42500 5 10 0 0 0 0 1
+mfg=Micro Commercial
+}
+N 42800 43400 42800 44400 4
+N 42800 44400 44100 44400 4
+N 44100 44400 43600 44400 4
+N 43600 43400 43600 44400 4
+C 40300 46200 1 0 0 generic-power.sym
+{
+T 40500 46450 5 10 1 1 0 3 1
+net=V_IN:1
+}
+C 46200 45900 1 270 0 resistor-1.sym
+{
+T 46600 45600 5 10 0 0 270 0 1
+device=RESISTOR
+T 46200 45300 5 10 1 1 90 0 1
+refdes=R101
+T 46400 45400 5 10 0 1 270 0 1
+footprint=0805
+T 46600 45100 5 10 1 1 90 0 1
+value=71.5k 1%
+T 46200 45900 5 10 0 0 0 0 1
+pn=RC0805FR-0771K5L
+T 46200 45900 5 10 0 0 0 0 1
+mfg=Yageo
+}
+N 46300 43400 46300 45000 4
+N 46300 45900 46300 46700 4
+C 54700 45000 1 270 0 capacitor-2.sym
+{
+T 55400 44800 5 10 0 0 270 0 1
+device=POLARIZED_CAPACITOR
+T 54900 44800 5 10 1 1 90 0 1
+refdes=C108
+T 55600 44800 5 10 0 0 270 0 1
+symversion=0.1
+T 54700 44100 5 10 1 1 90 0 1
+value=68uF 25V
+T 54700 45000 5 10 0 0 0 0 1
+footprint=CAP8
+T 54700 45000 5 10 0 0 0 0 1
+pn=870025574003
+T 54700 45000 5 10 0 0 0 0 1
+mfg=Wurth Electronik
+}
+C 55300 45000 1 270 0 capacitor-2.sym
+{
+T 56000 44800 5 10 0 0 270 0 1
+device=POLARIZED_CAPACITOR
+T 55500 44800 5 10 1 1 90 0 1
+refdes=C109
+T 56200 44800 5 10 0 0 270 0 1
+symversion=0.1
+T 55300 44100 5 10 1 1 90 0 1
+value=68uF 25V
+T 55300 45000 5 10 0 0 0 0 1
+footprint=CAP8
+T 55300 45000 5 10 0 0 0 0 1
+pn=870025574003
+T 55300 45000 5 10 0 0 0 0 1
+mfg=Wurth Electronik
+}
+C 54500 44100 1 90 0 capacitor-1.sym
+{
+T 53800 44300 5 10 0 0 90 0 1
+device=CAPACITOR
+T 54300 44800 5 10 1 1 90 0 1
+refdes=C107
+T 53600 44300 5 10 0 0 90 0 1
+symversion=0.1
+T 54500 44100 5 10 0 0 0 0 1
+footprint=0805
+T 54100 44100 5 10 1 1 90 0 1
+value=4.7uF 10%
+T 54500 44100 5 10 0 0 0 0 1
+pn=GRM219R6YA475KA73D
+T 54500 44100 5 10 0 0 0 0 1
+mfg=Murata
+}
+C 50700 42700 1 90 0 capacitor-1.sym
+{
+T 50000 42900 5 10 0 0 90 0 1
+device=CAPACITOR
+T 50700 43300 5 10 1 1 90 0 1
+refdes=C105
+T 49800 42900 5 10 0 0 90 0 1
+symversion=0.1
+T 50700 42700 5 10 0 0 0 0 1
+footprint=0805
+T 50300 42700 5 10 1 1 90 0 1
+value=4.7uF 10%
+T 50700 42700 5 10 0 0 0 0 1
+pn=GRM219R6YA475KA73D
+T 50700 42700 5 10 0 0 0 0 1
+mfg=Murata
+}
+C 51900 45900 1 0 0 MBRB4030G-1.sym
+{
+T 53100 47000 5 10 0 0 0 0 1
+device=V35PW60-M3/I
+T 52200 46500 5 10 1 1 0 0 1
+refdes=D103
+T 52395 46450 5 10 0 1 0 0 1
+footprint=TO252AE
+T 51895 45750 5 10 1 1 0 0 1
+value=V35PW60-M3/I
+T 51900 45900 5 10 0 0 0 0 1
+pn=V35PW60-M3/I
+T 51900 45900 5 10 0 0 0 0 1
+mfg=Vishay
+}
+C 46400 42500 1 90 0 resistor-1.sym
+{
+T 46000 42800 5 10 0 0 90 0 1
+device=RESISTOR
+T 46200 43000 5 10 0 1 90 0 1
+footprint=0805
+T 46200 42600 5 10 1 1 90 0 1
+refdes=R104
+T 46600 42600 5 10 1 1 90 0 1
+value=10.0k 1%
+T 46400 42500 5 10 0 0 0 0 1
+pn=RC0805FR-0710KL
+T 46400 42500 5 10 0 0 0 0 1
+mfg=Yageo
+}
+C 46500 43000 1 0 0 LTC1871EMS.sym
+{
+T 48100 45400 5 10 1 1 0 0 1
+device=LTC1871EMS
+T 49200 43000 5 10 1 1 0 0 1
+refdes=U100
+T 45000 43000 5 10 0 1 0 0 1
+footprint=MSOP10
+T 46500 43000 5 10 0 0 0 0 1
+pn=LTC1871EMS
+}
+C 48100 50500 1 0 0 generic-power.sym
+{
+T 48300 50750 5 10 1 1 0 3 1
+net=V_IN:1
+}
+C 48500 49600 1 180 0 generic-power.sym
+{
+T 48300 49350 5 10 1 1 180 3 1
+net=COM:1
+}
+C 48500 49600 1 90 0 zener-1.sym
+{
+T 47900 50000 5 10 0 0 90 0 1
+device=ZENER_DIODE
+T 48000 49900 5 10 1 1 90 0 1
+refdes=D100
+T 48700 49900 5 10 1 1 90 0 1
+value=16V
+T 48500 49600 5 10 0 0 0 0 1
+footprint=DO214AB
+T 48500 49600 5 10 0 0 0 0 1
+pn=SMDJ16A
+T 48500 49600 5 10 0 0 0 0 1
+mfg=Littelfuse
+}
+N 42700 50100 47300 50100 4
+N 47300 50100 47300 50500 4
+N 47300 50500 48300 50500 4
+N 48300 49600 47300 49600 4
+N 47300 49600 47300 49800 4
+N 42700 49800 47300 49800 4
+C 42400 42500 1 180 0 generic-power.sym
+{
+T 42200 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+C 43000 42500 1 180 0 generic-power.sym
+{
+T 42800 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+C 43800 42500 1 180 0 generic-power.sym
+{
+T 43600 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+C 44300 42500 1 180 0 generic-power.sym
+{
+T 44100 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+C 45000 42500 1 180 0 generic-power.sym
+{
+T 44800 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+C 45700 42500 1 180 0 generic-power.sym
+{
+T 45500 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+C 46500 42500 1 180 0 generic-power.sym
+{
+T 46300 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+C 47400 42500 1 180 0 generic-power.sym
+{
+T 47200 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+C 50200 42500 1 180 0 generic-power.sym
+{
+T 50000 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+C 50700 42500 1 180 0 generic-power.sym
+{
+T 50500 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+C 51600 42500 1 180 0 generic-power.sym
+{
+T 51400 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+C 55700 42400 1 180 0 generic-power.sym
+{
+T 55500 42150 5 10 1 1 180 3 1
+net=COM:1
+}
+C 41700 43400 1 90 0 capacitor-1.sym
+{
+T 41000 43600 5 10 0 0 90 0 1
+device=CAPACITOR
+T 41500 44100 5 10 1 1 90 0 1
+refdes=C101
+T 40800 43600 5 10 0 0 90 0 1
+symversion=0.1
+T 41700 43400 5 10 0 0 0 0 1
+footprint=0805
+T 41300 43400 5 10 1 1 90 0 1
+value=4.7uF 10%
+T 41700 43400 5 10 0 0 0 0 1
+pn=GRM219R6YA475KA73D
+T 41700 43400 5 10 0 0 0 0 1
+mfg=Murata
+}
+C 41700 42500 1 180 0 generic-power.sym
+{
+T 41500 42250 5 10 1 1 180 3 1
+net=COM:1
+}
+N 41500 43400 41500 42500 4
+N 41500 44300 41500 46200 4
+C 41900 46400 1 0 0 connector1-2.sym
+{
+T 42600 47300 5 10 1 1 0 6 1
+refdes=TP100
+T 42200 47250 5 10 0 0 0 0 1
+device=CONNECTOR_1
+T 42200 47450 5 10 0 0 0 0 1
+footprint=Pad80d40
+}
+C 53800 47800 1 0 0 connector1-2.sym
+{
+T 54500 48700 5 10 1 1 0 6 1
+refdes=TP101
+T 54100 48650 5 10 0 0 0 0 1
+device=CONNECTOR_1
+T 54100 48850 5 10 0 0 0 0 1
+footprint=Pad80d40
+}
+N 41900 46800 41700 46800 4
+N 41700 46800 41700 46200 4
+N 53800 48200 53400 48200 4
+N 53400 48200 53400 47600 4
+C 43200 48100 1 90 0 capacitor-1.sym
+{
+T 42500 48300 5 10 0 0 90 0 1
+device=CAPACITOR
+T 43400 48400 5 10 1 1 90 0 1
+refdes=C110
+T 42300 48300 5 10 0 0 90 0 1
+symversion=0.1
+T 43200 48100 5 10 0 0 0 0 1
+footprint=0805
+T 42800 48100 5 10 1 1 90 0 1
+value=6.8nF 10%
+T 43200 48100 5 10 0 0 0 0 1
+pn=C0805C682K5RACTU
+T 43200 48100 5 10 0 0 0 0 1
+mfg=Kemet
+}
+C 43200 48100 1 180 0 generic-power.sym
+{
+T 43000 47850 5 10 1 1 180 3 1
+net=COM:1
+}
+N 43000 49000 43000 50100 4
+C 51800 49700 1 0 0 connector1-2.sym
+{
+T 52500 50600 5 10 1 1 0 6 1
+refdes=TP102
+T 52100 50550 5 10 0 0 0 0 1
+device=CONNECTOR_1
+T 52100 50750 5 10 0 0 0 0 1
+footprint=Pad80d40
+}
+C 51600 48700 1 180 0 generic-power.sym
+{
+T 51400 48450 5 10 1 1 180 3 1
+net=COM:1
+}
+N 51400 48700 51400 50100 4
+N 51400 50100 51800 50100 4
+C 55500 49800 1 270 0 led-2.sym
+{
+T 56100 49700 5 10 0 0 270 0 1
+device=LED
+T 55500 49800 5 10 0 0 0 0 1
+footprint=0805
+T 55500 49800 5 10 0 0 0 0 1
+pn=LG R971-KN-1
+T 55500 49800 5 10 0 0 0 0 1
+mfg=OSRAM
+T 55700 49500 5 10 1 1 0 0 1
+refdes=D104
+}
+C 55300 50200 1 180 0 resistor-1.sym
+{
+T 55000 49800 5 10 0 0 180 0 1
+device=RESISTOR
+T 54800 50000 5 10 0 1 180 0 1
+footprint=0805
+T 55300 50200 5 10 0 0 90 0 1
+pn=RC0805FR-072KL
+T 55300 50200 5 10 0 0 90 0 1
+mfg=Yageo
+T 55200 50000 5 10 1 1 180 0 1
+refdes=R107
+T 55200 50400 5 10 1 1 180 0 1
+value=2.00k 1%
+}
+C 55800 48900 1 180 0 generic-power.sym
+{
+T 55600 48650 5 10 1 1 180 3 1
+net=COM:1
+}
+N 55300 50100 55600 50100 4
+N 55600 50100 55600 49800 4
+C 53700 50100 1 0 0 generic-power.sym
+{
+T 53900 50350 5 10 1 1 0 3 1
+net=+VMID:1
+}
+N 53900 50100 54400 50100 4
+C 41000 49600 1 0 0 connector2-1.sym
+{
+T 41200 50600 5 10 0 0 0 0 1
+device=CONNECTOR_2
+T 41000 50400 5 10 1 1 0 0 1
+refdes=J1
+T 41000 49600 5 10 0 0 0 0 1
+footprint=1824420000
+T 41000 49600 5 10 0 0 0 0 1
+pn=1824420000
+}
diff --git a/motors/RspBuckBoostv3/rspBuck-2.sch b/motors/RspBuckBoostv3/rspBuck-2.sch
new file mode 100644
index 0000000..e8da9fe
--- /dev/null
+++ b/motors/RspBuckBoostv3/rspBuck-2.sch
@@ -0,0 +1,385 @@
+v 20200319 2
+C 40000 40000 0 0 0 title-B.sym
+C 44700 46400 1 0 0 LM2678S-5.0.sym
+{
+T 37000 51000 5 10 0 1 0 0 1
+footprint=TO263-7
+T 45400 47600 5 10 1 1 0 0 1
+device=LM2678S
+T 46200 47800 5 10 1 1 0 0 1
+refdes=U200
+T 44700 46400 5 10 0 0 0 0 1
+pn=LM2678S-5.0
+T 44700 46400 5 10 0 0 0 0 1
+mfg=Texas Instruments
+}
+C 41900 46700 1 270 0 capacitor-2.sym
+{
+T 42600 46500 5 10 0 0 270 0 1
+device=POLARIZED_CAPACITOR
+T 42000 46800 5 10 1 1 180 0 1
+refdes=C200
+T 42800 46500 5 10 0 0 270 0 1
+symversion=0.1
+T 41900 45800 5 10 1 1 90 0 1
+value=68uF 25V
+T 41900 46700 5 10 0 0 0 0 1
+footprint=CAP8
+T 41900 46700 5 10 0 0 0 0 1
+pn=870025574003
+T 41900 46700 5 10 0 0 0 0 1
+mfg=Wurth Electronik
+}
+C 50000 46600 1 270 0 capacitor-2.sym
+{
+T 50700 46400 5 10 0 0 270 0 1
+device=POLARIZED_CAPACITOR
+T 50900 46200 5 10 1 1 180 0 1
+refdes=C204
+T 50900 46400 5 10 0 0 270 0 1
+symversion=0.1
+T 50000 45700 5 10 1 1 90 0 1
+value=330uF 16V
+T 50000 46600 5 10 0 0 0 0 1
+footprint=CAP8
+T 50000 46600 5 10 0 0 0 0 1
+pn=RL81C331MDN1KX
+T 50000 46600 5 10 0 0 0 0 1
+mfg=Nichicon
+}
+C 48200 46800 1 0 0 inductor-1.sym
+{
+T 48400 47300 5 10 0 0 0 0 1
+device=INDUCTOR
+T 48600 47100 5 10 1 1 0 0 1
+refdes=L200
+T 48400 47500 5 10 0 0 0 0 1
+symversion=0.1
+T 48200 46800 5 10 0 0 0 0 1
+footprint=SPM12565XT
+T 48400 46700 5 10 1 1 0 0 1
+value=13uH
+T 48200 46800 5 10 0 0 0 0 1
+pn=7443551131
+T 48200 46800 5 10 0 0 0 0 1
+mfg=Wurth Electronik
+}
+C 43300 45800 1 90 0 capacitor-1.sym
+{
+T 42600 46000 5 10 0 0 90 0 1
+device=CAPACITOR
+T 43600 46100 5 10 1 1 180 0 1
+refdes=C201
+T 42400 46000 5 10 0 0 90 0 1
+symversion=0.1
+T 43300 45800 5 10 0 0 0 0 1
+footprint=0805
+T 42900 45800 5 10 1 1 90 0 1
+value=0.1uF 10%
+T 43300 45800 5 10 0 0 0 0 1
+pn=GMK212BJ104KGHT
+T 43300 45800 5 10 0 0 0 0 1
+mfg=Taiyo Yuden
+}
+C 48000 47400 1 180 0 capacitor-1.sym
+{
+T 47800 46700 5 10 0 0 180 0 1
+device=CAPACITOR
+T 47400 47400 5 10 1 1 180 0 1
+refdes=C202
+T 47800 46500 5 10 0 0 180 0 1
+symversion=0.1
+T 48000 47400 5 10 0 0 90 0 1
+footprint=0805
+T 48500 47400 5 10 1 1 180 0 1
+value=10nF 10%
+T 48000 47400 5 10 0 0 90 0 1
+pn=C0805C103K3RACTU
+T 48000 47400 5 10 0 0 90 0 1
+mfg=Kemet
+}
+C 40800 47700 1 0 0 generic-power.sym
+{
+T 41000 47950 5 10 1 1 0 3 1
+net=+VMID:1
+}
+C 42300 45800 1 180 0 generic-power.sym
+{
+T 42100 45550 5 10 1 1 180 3 1
+net=COM:1
+}
+N 46900 46900 48200 46900 4
+N 49100 46900 51500 46900 4
+N 50200 46600 50200 46900 4
+N 50000 46900 50000 47500 4
+N 50000 47500 46900 47500 4
+N 47100 47200 46900 47200 4
+N 48000 47200 48000 46900 4
+N 45800 46400 45800 45800 4
+N 45800 46100 46100 46100 4
+N 46100 46100 46100 46400 4
+N 44700 47400 41000 47400 4
+N 41000 47400 41000 47700 4
+N 42100 46700 42100 47400 4
+N 43100 46700 43100 47400 4
+C 44300 47000 1 180 0 resistor-1.sym
+{
+T 44000 46600 5 10 0 0 180 0 1
+device=RESISTOR
+T 43800 46800 5 10 0 1 180 0 1
+footprint=0805
+T 44200 46800 5 10 1 1 180 0 1
+refdes=R200
+T 44200 47200 5 10 1 1 180 0 1
+value=10.0k 1%
+T 44300 47000 5 10 0 0 90 0 1
+pn=RC0805FR-0710KL
+T 44300 47000 5 10 0 0 90 0 1
+mfg=Yageo
+}
+N 43400 46900 43100 46900 4
+N 44300 46900 44700 46900 4
+C 49500 45700 1 90 0 capacitor-1.sym
+{
+T 48800 45900 5 10 0 0 90 0 1
+device=CAPACITOR
+T 49300 45800 5 10 1 1 0 0 1
+refdes=C203
+T 48600 45900 5 10 0 0 90 0 1
+symversion=0.1
+T 49500 45700 5 10 0 0 0 0 1
+footprint=0805
+T 49100 45700 5 10 1 1 90 0 1
+value=0.1uF 10%
+T 49500 45700 5 10 0 0 0 0 1
+pn=GMK212BJ104KGHT
+T 49500 45700 5 10 0 0 0 0 1
+mfg=Taiyo Yuden
+}
+N 49300 46600 49300 46900 4
+C 51300 46900 1 0 0 generic-power.sym
+{
+T 51500 47150 5 10 1 1 0 3 1
+net=+5V:1
+}
+T 50400 40700 9 10 1 0 0 0 1
+Raspberry PI 4B Buck Converter
+T 53900 40100 9 10 1 0 0 0 1
+Scott Berman
+T 45800 40900 9 10 1 0 0 0 3
+Buck converter for supplying power to
+Raspberry PI 4B. Output Voltage set to 5V.
+4A. Input range 9V to 20V.
+T 46500 40300 9 10 1 0 0 0 1
+Switching frequency: 260 kHz
+C 53400 42200 1 0 0 header40-2.sym
+{
+T 53650 50700 5 10 0 1 0 0 1
+device=HEADER40
+T 54000 50300 5 10 1 1 0 0 1
+refdes=J200
+T 53400 42200 5 10 0 0 0 0 1
+footprint=HEADER40_2
+T 53400 42000 5 10 0 0 0 0 1
+pn=ESQ-120-44-T-D
+}
+C 55000 50100 1 0 0 generic-power.sym
+{
+T 55200 50350 5 10 1 1 0 3 1
+net=+5V:1
+}
+N 55200 49600 55200 50100 4
+N 55200 50000 54800 50000 4
+N 55200 49600 54800 49600 4
+C 55600 42200 1 180 0 generic-power.sym
+{
+T 55400 41950 5 10 1 1 180 3 1
+net=COM:1
+}
+C 53000 42200 1 180 0 generic-power.sym
+{
+T 52800 41950 5 10 1 1 180 3 1
+net=COM:1
+}
+N 55400 42200 55400 49200 4
+N 55400 43600 54800 43600 4
+N 54800 46400 55400 46400 4
+N 54800 47600 55400 47600 4
+N 54800 49200 55400 49200 4
+N 53400 42400 52800 42400 4
+N 52800 42200 52800 48400 4
+N 53400 45200 52800 45200 4
+N 53400 48400 52800 48400 4
+C 43300 45800 1 180 0 generic-power.sym
+{
+T 43100 45550 5 10 1 1 180 3 1
+net=COM:1
+}
+C 46000 45800 1 180 0 generic-power.sym
+{
+T 45800 45550 5 10 1 1 180 3 1
+net=COM:1
+}
+C 49500 45700 1 180 0 generic-power.sym
+{
+T 49300 45450 5 10 1 1 180 3 1
+net=COM:1
+}
+C 50400 45700 1 180 0 generic-power.sym
+{
+T 50200 45450 5 10 1 1 180 3 1
+net=COM:1
+}
+C 56400 44100 1 180 0 input-1.sym
+{
+T 56400 43800 5 10 0 0 180 0 1
+device=INPUT
+T 55900 43900 5 10 1 1 0 0 1
+net=DR:1
+}
+C 47600 45800 1 90 0 MBRB4030G-1.sym
+{
+T 46500 47000 5 10 0 0 90 0 1
+device=V35PW60-M3/I
+T 47000 46100 5 10 1 1 90 0 1
+refdes=D201
+T 47050 46295 5 10 0 1 90 0 1
+footprint=TO252AE
+T 47750 45595 5 10 1 1 90 0 1
+value=V35PW60-M3/I
+T 47600 45800 5 10 0 0 90 0 1
+pn=V35PW60-M3/I
+T 47600 45800 5 10 0 0 90 0 1
+mfg=Vishay
+}
+C 47500 45800 1 180 0 generic-power.sym
+{
+T 47300 45550 5 10 1 1 180 3 1
+net=COM:1
+}
+N 47300 46700 47300 46900 4
+N 47500 45800 47300 45800 4
+C 51000 47700 1 0 0 connector1-2.sym
+{
+T 51700 48600 5 10 1 1 0 6 1
+refdes=TP201
+T 51300 48550 5 10 0 0 0 0 1
+device=CONNECTOR_1
+T 51300 48750 5 10 0 0 0 0 1
+footprint=Pad80d40
+}
+C 51200 44500 1 180 0 generic-power.sym
+{
+T 51000 44250 5 10 1 1 180 3 1
+net=COM:1
+}
+N 51000 48100 50700 48100 4
+N 50700 48100 50700 46900 4
+C 51200 44200 1 0 0 connector1-2.sym
+{
+T 51900 45100 5 10 1 1 0 6 1
+refdes=TP202
+T 51500 45050 5 10 0 0 0 0 1
+device=CONNECTOR_1
+T 51500 45250 5 10 0 0 0 0 1
+footprint=Pad80d40
+}
+N 51000 44500 51000 44600 4
+N 51000 44600 51200 44600 4
+C 48800 43700 1 270 0 led-2.sym
+{
+T 49000 43400 5 10 1 1 0 0 1
+refdes=D202
+T 49400 43600 5 10 0 0 270 0 1
+device=LED
+T 48800 43700 5 10 0 0 0 0 1
+footprint=0805
+T 48800 43700 5 10 0 0 0 0 1
+pn=LG R971-KN-1
+T 48800 43700 5 10 0 0 0 0 1
+mfg=OSRAM
+}
+C 48600 44100 1 180 0 resistor-1.sym
+{
+T 48300 43700 5 10 0 0 180 0 1
+device=RESISTOR
+T 48100 43900 5 10 0 1 180 0 1
+footprint=0805
+T 48500 43900 5 10 1 1 180 0 1
+refdes=R201
+T 48500 44300 5 10 1 1 180 0 1
+value=499R 1%
+T 48600 44100 5 10 0 0 90 0 1
+pn=RC0805FR-07499RL
+T 48600 44100 5 10 0 0 90 0 1
+mfg=Yageo
+}
+C 49100 42800 1 180 0 generic-power.sym
+{
+T 48900 42550 5 10 1 1 180 3 1
+net=COM:1
+}
+C 47000 44100 1 0 0 generic-power.sym
+{
+T 47200 44350 5 10 1 1 0 3 1
+net=+5V:1
+}
+N 47200 44100 47200 44000 4
+N 47200 44000 47700 44000 4
+N 48600 44000 48900 44000 4
+N 48900 44000 48900 43700 4
+C 52200 45700 1 180 0 output-1.sym
+{
+T 52100 45400 5 10 0 0 180 0 1
+device=OUTPUT
+T 52000 45700 5 10 1 1 180 0 1
+net=SCK:1
+}
+C 52600 46500 1 180 0 output-1.sym
+{
+T 52500 46200 5 10 0 0 180 0 1
+device=OUTPUT
+T 52400 46500 5 10 1 1 180 0 1
+net=MOSI:1
+}
+C 51800 45900 1 0 0 input-1.sym
+{
+T 51800 46200 5 10 0 0 0 0 1
+device=INPUT
+T 52300 46100 5 10 1 1 180 0 1
+net=MISO:1
+}
+N 55600 45600 54800 45600 4
+{
+T 55600 45600 5 10 1 0 0 0 1
+net=CS
+}
+N 55600 44000 54800 44000 4
+N 52200 45600 53400 45600 4
+N 52600 46400 53400 46400 4
+N 52600 46000 53400 46000 4
+C 56400 45700 1 180 0 input-1.sym
+{
+T 56400 45400 5 10 0 0 180 0 1
+device=INPUT
+T 55900 45500 5 10 1 1 0 0 1
+net=CS:1
+}
+N 52400 44100 52400 43600 4
+N 52400 43600 53400 43600 4
+N 52400 45000 52400 45600 4
+C 52500 44100 1 90 0 resistor-1.sym
+{
+T 52100 44400 5 10 0 0 90 0 1
+device=RESISTOR
+T 52300 44600 5 10 0 1 90 0 1
+footprint=0805
+T 52300 44200 5 10 1 1 90 0 1
+refdes=R202
+T 52700 44200 5 10 1 1 90 0 1
+value=499R 1%
+T 52500 44100 5 10 0 0 0 0 1
+pn=RC0805FR-07499RL
+T 52500 44100 5 10 0 0 0 0 1
+mfg=Yageo
+}
diff --git a/motors/RspBuckBoostv3/rspIMU.sch b/motors/RspBuckBoostv3/rspIMU.sch
new file mode 100644
index 0000000..af6c555
--- /dev/null
+++ b/motors/RspBuckBoostv3/rspIMU.sch
@@ -0,0 +1,347 @@
+v 20130925 2
+C 40000 40000 0 0 0 title-B.sym
+C 49900 49100 1 90 0 resistor-1.sym
+{
+T 49500 49400 5 10 0 0 90 0 1
+device=RESISTOR
+T 49600 49300 5 10 1 1 90 0 1
+refdes=R401
+T 49900 49200 5 10 1 1 0 0 1
+value=120R
+T 49800 48900 5 10 0 0 0 0 1
+footprint=0805
+T 50400 49200 5 10 0 0 0 0 1
+pn=ESR10EZPF1200
+}
+C 49900 46600 1 90 0 resistor-1.sym
+{
+T 49500 46900 5 10 0 0 90 0 1
+device=RESISTOR
+T 49600 46800 5 10 1 1 90 0 1
+refdes=R402
+T 49900 46700 5 10 1 1 0 0 1
+value=120R
+T 49700 46300 5 10 0 0 0 0 1
+footprint=0805
+T 49700 46400 5 10 0 0 0 0 1
+pn=ESR10EZPF1200
+}
+C 55000 44600 1 0 0 microfit-rt-2x7.sym
+{
+T 55700 47200 5 10 0 0 0 0 1
+device=CONNECTOR_15
+T 53909 43100 5 10 0 1 0 0 1
+footprint=0430451400
+T 56200 48900 5 10 1 1 0 0 1
+refdes=J401
+T 54900 44400 5 10 0 0 0 0 1
+pn=0430451400
+}
+N 55000 44700 51800 44700 4
+N 51800 43400 51800 44700 4
+N 51800 43400 48200 43400 4
+N 55000 45000 51500 45000 4
+N 51500 45000 51500 43700 4
+N 51500 43700 48200 43700 4
+N 55000 45300 51500 45300 4
+N 51500 45300 51500 45900 4
+N 51500 45900 48200 45900 4
+N 55000 45600 51800 45600 4
+N 51800 45600 51800 46200 4
+N 51800 46200 48200 46200 4
+N 55000 45900 52200 45900 4
+N 52200 45900 52200 46600 4
+N 48200 46600 52200 46600 4
+N 55000 46200 52600 46200 4
+N 52600 46200 52600 47500 4
+N 49300 47500 52600 47500 4
+N 49300 46900 49300 47500 4
+N 49300 46900 48200 46900 4
+N 53000 46500 55000 46500 4
+N 53000 46500 53000 48400 4
+N 53000 48400 48200 48400 4
+N 55000 46800 53300 46800 4
+N 53300 46800 53300 48700 4
+N 53300 48700 48200 48700 4
+N 55000 47100 53700 47100 4
+N 53700 47100 53700 49100 4
+N 48200 49100 53700 49100 4
+N 54000 47400 55000 47400 4
+N 54000 47400 54000 50000 4
+N 49300 50000 54000 50000 4
+N 49300 50000 49300 49400 4
+N 49300 49400 48200 49400 4
+C 54500 47900 1 180 0 generic-power.sym
+{
+T 54300 47650 5 10 1 1 180 3 1
+net=COM:1
+}
+N 55000 48300 54300 48300 4
+N 54300 48300 54300 47900 4
+N 55000 47700 54600 47700 4
+N 54600 47700 54600 48300 4
+N 55000 48600 54300 48600 4
+N 54300 48600 54300 48800 4
+N 55000 48000 54800 48000 4
+C 46000 47800 1 90 0 capacitor-1.sym
+{
+T 45300 48000 5 10 0 0 90 0 1
+device=CAPACITOR
+T 45100 48000 5 10 0 0 90 0 1
+symversion=0.1
+T 46000 47800 5 10 0 0 0 0 1
+footprint=0805
+T 46000 47800 5 10 0 0 0 0 1
+pn=GMK212BJ104KGHT
+T 46000 47800 5 10 0 0 0 0 1
+mfg=Taiyo Yuden
+T 46300 48600 5 10 1 1 180 0 1
+refdes=C401
+T 45600 47800 5 10 1 1 90 0 1
+value=0.1uF 10%
+}
+C 46000 42800 1 90 0 capacitor-1.sym
+{
+T 45300 43000 5 10 0 0 90 0 1
+device=CAPACITOR
+T 45100 43000 5 10 0 0 90 0 1
+symversion=0.1
+T 46000 42800 5 10 0 0 0 0 1
+footprint=0805
+T 46000 42800 5 10 0 0 0 0 1
+pn=GMK212BJ104KGHT
+T 46000 42800 5 10 0 0 0 0 1
+mfg=Taiyo Yuden
+T 46300 43600 5 10 1 1 180 0 1
+refdes=C403
+T 45600 42800 5 10 1 1 90 0 1
+value=0.1uF 10%
+}
+C 46000 45300 1 90 0 capacitor-1.sym
+{
+T 45300 45500 5 10 0 0 90 0 1
+device=CAPACITOR
+T 45100 45500 5 10 0 0 90 0 1
+symversion=0.1
+T 46000 45300 5 10 0 0 0 0 1
+footprint=0805
+T 46000 45300 5 10 0 0 0 0 1
+pn=GMK212BJ104KGHT
+T 46000 45300 5 10 0 0 0 0 1
+mfg=Taiyo Yuden
+T 46300 46100 5 10 1 1 180 0 1
+refdes=C402
+T 45600 45300 5 10 1 1 90 0 1
+value=0.1uF 10%
+}
+C 46000 45300 1 180 0 generic-power.sym
+{
+T 45800 45050 5 10 1 1 180 3 1
+net=COM:1
+}
+C 46000 42800 1 180 0 generic-power.sym
+{
+T 45800 42550 5 10 1 1 180 3 1
+net=COM:1
+}
+C 46000 47800 1 180 0 generic-power.sym
+{
+T 45800 47550 5 10 1 1 180 3 1
+net=COM:1
+}
+N 46600 45900 46300 45900 4
+N 46300 45900 46300 45300 4
+N 46300 45300 45800 45300 4
+N 46600 43400 46300 43400 4
+N 46300 43400 46300 42800 4
+N 46300 42800 45800 42800 4
+N 46600 48400 46300 48400 4
+N 46300 48400 46300 47800 4
+N 46300 47800 45800 47800 4
+C 41500 42000 1 0 0 AZ1117IH-3-3TRG1.sym
+{
+T 41500 42000 5 10 1 1 0 0 1
+refdes=U404
+T 41600 43000 5 10 1 1 0 0 1
+value=AZ1117IH-3.3TRG1
+T 42400 42000 5 10 0 1 0 0 1
+footprint=SOT223
+T 41500 41900 5 10 0 0 0 0 1
+pn=AZ1117IH-3.3TRG1
+}
+C 40900 41800 1 90 0 capacitor-1.sym
+{
+T 40200 42000 5 10 0 0 90 0 1
+device=CAPACITOR
+T 40000 42000 5 10 0 0 90 0 1
+symversion=0.1
+T 40400 42000 5 10 1 1 90 0 1
+refdes=C405
+T 40900 41800 5 10 1 1 0 0 1
+value=22uF
+T 40900 41800 5 10 0 0 0 0 1
+footprint=1206
+T 40900 41800 5 10 0 0 0 0 1
+pn=CC1206MKX5R7BB226
+}
+C 44100 41800 1 90 0 capacitor-1.sym
+{
+T 43400 42000 5 10 0 0 90 0 1
+device=CAPACITOR
+T 43200 42000 5 10 0 0 90 0 1
+symversion=0.1
+T 43600 41900 5 10 1 1 90 0 1
+refdes=C404
+T 44100 41800 5 10 1 1 0 0 1
+value=22uF
+T 44100 41800 5 10 0 0 0 0 1
+footprint=1206
+T 44100 41600 5 10 0 0 0 0 1
+pn=CC1206MKX5R7BB226
+}
+T 55500 47400 9 10 1 0 0 0 1
+DR_H
+T 55500 47100 9 10 1 0 0 0 1
+DR_L
+T 55300 46800 9 10 1 0 0 0 1
+MOSI_H
+T 55300 46500 9 10 1 0 0 0 1
+MOSI_L
+T 55300 46200 9 10 1 0 0 0 1
+MISO_H
+T 55300 45900 9 10 1 0 0 0 1
+MISO_L
+T 55400 45600 9 10 1 0 0 0 1
+SCK_H
+T 55400 45300 9 10 1 0 0 0 1
+SCK_L
+T 55500 45000 9 10 1 0 0 0 1
+CS_H
+T 55500 44700 9 10 1 0 0 0 1
+CS_L
+T 55700 48600 9 10 1 0 0 0 1
++5V
+T 55600 48300 9 10 1 0 0 0 1
+GND
+T 55600 47700 9 10 1 0 0 0 1
+GND
+N 40700 42700 41500 42700 4
+C 40500 42700 1 0 0 generic-power.sym
+{
+T 40700 42950 5 10 1 1 0 3 1
+net=+5V:1
+}
+C 40900 41800 1 180 0 generic-power.sym
+{
+T 40700 41550 5 10 1 1 180 3 1
+net=COM:1
+}
+C 44100 41800 1 180 0 generic-power.sym
+{
+T 43900 41550 5 10 1 1 180 3 1
+net=COM:1
+}
+C 42600 42000 1 180 0 generic-power.sym
+{
+T 42400 41750 5 10 1 1 180 3 1
+net=COM:1
+}
+N 43300 42400 43600 42400 4
+N 43600 42400 43600 42700 4
+C 44900 48700 1 0 0 3.3V-plus-1.sym
+C 43700 42800 1 0 0 3.3V-plus-1.sym
+C 44900 43700 1 0 0 3.3V-plus-1.sym
+C 44900 46200 1 0 0 3.3V-plus-1.sym
+N 46600 48700 45100 48700 4
+N 46600 46200 45100 46200 4
+N 45100 43700 46600 43700 4
+N 43100 44100 46600 44100 4
+{
+T 44200 44100 5 10 1 0 0 0 1
+net=CS
+}
+N 44200 46600 46600 46600 4
+N 44200 46900 46600 46900 4
+N 44200 49100 46600 49100 4
+N 44200 49400 46600 49400 4
+C 46600 48200 1 0 0 ADM3490ARZ.sym
+{
+T 46895 49700 5 10 1 1 0 0 1
+refdes=U401
+T 46595 48100 5 10 0 1 0 0 1
+footprint=SO8
+T 46895 49900 5 10 1 1 0 0 1
+model=ADM3490ARZ
+T 46600 48200 5 10 0 0 0 0 1
+pn=ADM3490ARZ
+}
+C 46600 45700 1 0 0 ADM3490ARZ.sym
+{
+T 46895 47200 5 10 1 1 0 0 1
+refdes=U402
+T 46595 45600 5 10 0 1 0 0 1
+footprint=SO8
+T 46895 47400 5 10 1 1 0 0 1
+model=ADM3490ARZ
+T 46600 45700 5 10 0 0 0 0 1
+pn=ADM3490ARZ
+}
+C 46600 43200 1 0 0 ADM3490ARZ.sym
+{
+T 46895 44700 5 10 1 1 0 0 1
+refdes=U403
+T 46595 43100 5 10 0 1 0 0 1
+footprint=SO8
+T 46895 44900 5 10 1 1 0 0 1
+model=ADM3490ARZ
+T 46600 43200 5 10 0 0 0 0 1
+pn=ADM3490ARZ
+}
+C 42300 44000 1 0 0 input-1.sym
+{
+T 42300 44300 5 10 0 0 0 0 1
+device=INPUT
+T 42300 44050 5 10 1 1 0 0 1
+net=CS:1
+}
+C 44200 46700 1 180 0 output-1.sym
+{
+T 44100 46400 5 10 0 0 180 0 1
+device=OUTPUT
+T 44000 46700 5 10 1 1 180 0 1
+net=SCK:1
+}
+C 43400 46800 1 0 0 input-1.sym
+{
+T 43400 47100 5 10 0 0 0 0 1
+device=INPUT
+T 43900 47000 5 10 1 1 180 0 1
+net=MISO:1
+}
+C 44200 49200 1 180 0 output-1.sym
+{
+T 44100 48900 5 10 0 0 180 0 1
+device=OUTPUT
+T 44000 49200 5 10 1 1 180 0 1
+net=MOSI:1
+}
+C 43400 49300 1 0 0 input-1.sym
+{
+T 43400 49600 5 10 0 0 0 0 1
+device=INPUT
+T 43900 49500 5 10 1 1 180 0 1
+net=DR:1
+}
+N 54800 49100 54800 48000 4
+C 54100 48800 1 0 0 generic-power.sym
+{
+T 54300 49050 5 10 1 1 0 3 1
+net=V_IN:1
+}
+C 54600 49100 1 0 0 generic-power.sym
+{
+T 54800 49350 5 10 1 1 0 3 1
+net=+5V:1
+}
+N 43900 42800 43900 42700 4
+N 43300 42700 43900 42700 4
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.bottom.gbr b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.bottom.gbr
new file mode 100644
index 0000000..f4dc95b
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.bottom.gbr
@@ -0,0 +1,7502 @@
+G04 start of page 3 for group 3 idx 1 *
+G04 Title: RspPiPS, bottom *
+G04 Creator: pcb 4.2.0 *
+G04 CreationDate: Sun Jan 23 00:25:27 2022 UTC *
+G04 For: debian *
+G04 Format: Gerber/RS-274X *
+G04 PCB-Dimensions (mil): 10000.00 10000.00 *
+G04 PCB-Coordinate-Origin: lower left *
+%MOIN*%
+%FSLAX25Y25*%
+%LNBOTTOM*%
+%ADD57C,0.0380*%
+%ADD56C,0.0453*%
+%ADD55C,0.0354*%
+%ADD54C,0.1181*%
+%ADD53C,0.0402*%
+%ADD52C,0.1063*%
+%ADD51C,0.0200*%
+%ADD50C,0.0350*%
+%ADD49C,0.0600*%
+%ADD48C,0.0768*%
+%ADD47C,0.0800*%
+%ADD46C,0.0630*%
+%ADD45C,0.0620*%
+%ADD44C,0.2362*%
+%ADD43C,0.0787*%
+%ADD42C,0.0500*%
+%ADD41C,0.0360*%
+%ADD40C,0.0250*%
+%ADD39C,0.0450*%
+%ADD38C,0.0400*%
+%ADD37C,0.1000*%
+%ADD36C,0.0150*%
+%ADD35C,0.0001*%
+G54D35*G36*
+X191500Y772000D02*Y769982D01*
+X191048Y769453D01*
+X190678Y768849D01*
+X190407Y768195D01*
+X190242Y767506D01*
+X190186Y766800D01*
+X190242Y766094D01*
+X190407Y765405D01*
+X190678Y764751D01*
+X191048Y764147D01*
+X191500Y763618D01*
+Y759982D01*
+X191048Y759453D01*
+X190678Y758849D01*
+X190407Y758195D01*
+X190242Y757506D01*
+X190186Y756800D01*
+X190242Y756094D01*
+X190407Y755405D01*
+X190678Y754751D01*
+X191048Y754147D01*
+X191508Y753608D01*
+X192047Y753148D01*
+X192651Y752778D01*
+X193305Y752507D01*
+X193994Y752342D01*
+X194700Y752286D01*
+X195000Y752310D01*
+Y740500D01*
+X184693D01*
+Y752287D01*
+X184700Y752286D01*
+X185406Y752342D01*
+X186095Y752507D01*
+X186749Y752778D01*
+X187353Y753148D01*
+X187892Y753608D01*
+X188352Y754147D01*
+X188722Y754751D01*
+X188993Y755405D01*
+X189158Y756094D01*
+X189200Y756800D01*
+X189158Y757506D01*
+X188993Y758195D01*
+X188722Y758849D01*
+X188352Y759453D01*
+X187892Y759992D01*
+X187353Y760452D01*
+X186749Y760822D01*
+X186095Y761093D01*
+X185406Y761258D01*
+X184700Y761314D01*
+X184693Y761313D01*
+Y772000D01*
+X191500D01*
+G37*
+G36*
+X184693Y740500D02*X174700D01*
+Y752307D01*
+X177935Y752314D01*
+X178165Y752369D01*
+X178383Y752459D01*
+X178584Y752583D01*
+X178764Y752736D01*
+X178917Y752916D01*
+X179041Y753117D01*
+X179131Y753335D01*
+X179186Y753565D01*
+X179200Y753800D01*
+X179186Y760035D01*
+X179131Y760265D01*
+X179041Y760483D01*
+X178917Y760684D01*
+X178764Y760864D01*
+X178584Y761017D01*
+X178383Y761141D01*
+X178165Y761231D01*
+X177935Y761286D01*
+X177700Y761300D01*
+X174700Y761293D01*
+Y772000D01*
+X184693D01*
+Y761313D01*
+X183994Y761258D01*
+X183305Y761093D01*
+X182651Y760822D01*
+X182047Y760452D01*
+X181508Y759992D01*
+X181048Y759453D01*
+X180678Y758849D01*
+X180407Y758195D01*
+X180242Y757506D01*
+X180186Y756800D01*
+X180242Y756094D01*
+X180407Y755405D01*
+X180678Y754751D01*
+X181048Y754147D01*
+X181508Y753608D01*
+X182047Y753148D01*
+X182651Y752778D01*
+X183305Y752507D01*
+X183994Y752342D01*
+X184693Y752287D01*
+Y740500D01*
+G37*
+G36*
+X174700D02*X166000D01*
+Y754408D01*
+X166962Y755977D01*
+X167733Y757840D01*
+X168204Y759801D01*
+X168323Y761811D01*
+X168204Y763821D01*
+X167733Y765782D01*
+X166962Y767645D01*
+X166000Y769214D01*
+Y772000D01*
+X174700D01*
+Y761293D01*
+X171465Y761286D01*
+X171235Y761231D01*
+X171017Y761141D01*
+X170816Y761017D01*
+X170636Y760864D01*
+X170483Y760684D01*
+X170359Y760483D01*
+X170269Y760265D01*
+X170214Y760035D01*
+X170200Y759800D01*
+X170214Y753565D01*
+X170269Y753335D01*
+X170359Y753117D01*
+X170483Y752916D01*
+X170636Y752736D01*
+X170816Y752583D01*
+X171017Y752459D01*
+X171235Y752369D01*
+X171465Y752314D01*
+X171700Y752300D01*
+X174700Y752307D01*
+Y740500D01*
+G37*
+G36*
+X467406Y772106D02*X467000Y741000D01*
+Y661000D01*
+X458458D01*
+Y680857D01*
+X458469Y680857D01*
+X459552Y680942D01*
+X460609Y681196D01*
+X461613Y681612D01*
+X462540Y682180D01*
+X463366Y682885D01*
+X464072Y683712D01*
+X464640Y684639D01*
+X465056Y685643D01*
+X465310Y686700D01*
+X465374Y687783D01*
+X465310Y688867D01*
+X465056Y689924D01*
+X464640Y690928D01*
+X464072Y691855D01*
+X463366Y692681D01*
+X462540Y693387D01*
+X461613Y693955D01*
+X460609Y694371D01*
+X459552Y694625D01*
+X458469Y694710D01*
+X458458Y694709D01*
+Y734794D01*
+X458469Y734794D01*
+X459552Y734879D01*
+X460609Y735133D01*
+X461613Y735549D01*
+X462540Y736117D01*
+X463366Y736822D01*
+X464072Y737649D01*
+X464640Y738576D01*
+X465056Y739580D01*
+X465310Y740637D01*
+X465374Y741720D01*
+X465310Y742804D01*
+X465056Y743861D01*
+X464640Y744865D01*
+X464072Y745792D01*
+X463366Y746618D01*
+X462540Y747324D01*
+X461613Y747892D01*
+X460609Y748308D01*
+X459552Y748562D01*
+X458469Y748647D01*
+X458458Y748646D01*
+Y772097D01*
+X467406Y772106D01*
+G37*
+G36*
+X458458Y661000D02*X441461D01*
+Y675167D01*
+X442104Y675218D01*
+X442732Y675368D01*
+X443328Y675615D01*
+X443878Y675952D01*
+X444369Y676371D01*
+X444788Y676862D01*
+X445125Y677412D01*
+X445372Y678009D01*
+X445523Y678636D01*
+X445561Y679280D01*
+X445523Y679923D01*
+X445372Y680550D01*
+X445125Y681147D01*
+X444788Y681697D01*
+X444369Y682188D01*
+X443878Y682607D01*
+X443328Y682944D01*
+X442732Y683191D01*
+X442104Y683342D01*
+X441461Y683392D01*
+Y686978D01*
+X442104Y687029D01*
+X442732Y687179D01*
+X443328Y687426D01*
+X443878Y687763D01*
+X444369Y688182D01*
+X444788Y688673D01*
+X445125Y689223D01*
+X445372Y689820D01*
+X445523Y690447D01*
+X445561Y691091D01*
+X445523Y691734D01*
+X445372Y692361D01*
+X445125Y692958D01*
+X444788Y693508D01*
+X444369Y693999D01*
+X443878Y694418D01*
+X443328Y694755D01*
+X442732Y695002D01*
+X442104Y695153D01*
+X441461Y695203D01*
+Y698789D01*
+X442104Y698840D01*
+X442732Y698990D01*
+X443328Y699237D01*
+X443878Y699574D01*
+X444369Y699993D01*
+X444788Y700484D01*
+X445125Y701034D01*
+X445372Y701631D01*
+X445523Y702258D01*
+X445561Y702902D01*
+X445523Y703545D01*
+X445372Y704172D01*
+X445125Y704769D01*
+X444788Y705319D01*
+X444369Y705810D01*
+X443878Y706229D01*
+X443328Y706566D01*
+X442732Y706813D01*
+X442104Y706964D01*
+X441461Y707014D01*
+Y710600D01*
+X442104Y710651D01*
+X442732Y710801D01*
+X443328Y711048D01*
+X443878Y711385D01*
+X444369Y711805D01*
+X444788Y712295D01*
+X445125Y712845D01*
+X445372Y713442D01*
+X445523Y714069D01*
+X445561Y714713D01*
+X445523Y715356D01*
+X445372Y715983D01*
+X445125Y716580D01*
+X444788Y717130D01*
+X444369Y717621D01*
+X443878Y718040D01*
+X443328Y718377D01*
+X442732Y718624D01*
+X442104Y718775D01*
+X441461Y718825D01*
+Y722411D01*
+X442104Y722462D01*
+X442732Y722612D01*
+X443328Y722859D01*
+X443878Y723196D01*
+X444369Y723616D01*
+X444788Y724106D01*
+X445125Y724657D01*
+X445372Y725253D01*
+X445523Y725880D01*
+X445561Y726524D01*
+X445523Y727167D01*
+X445372Y727794D01*
+X445125Y728391D01*
+X444788Y728941D01*
+X444369Y729432D01*
+X443878Y729851D01*
+X443328Y730188D01*
+X442732Y730435D01*
+X442104Y730586D01*
+X441461Y730636D01*
+Y734222D01*
+X442104Y734273D01*
+X442732Y734423D01*
+X443328Y734670D01*
+X443878Y735007D01*
+X444369Y735427D01*
+X444788Y735917D01*
+X445125Y736468D01*
+X445372Y737064D01*
+X445523Y737691D01*
+X445561Y738335D01*
+X445523Y738978D01*
+X445372Y739606D01*
+X445125Y740202D01*
+X444788Y740752D01*
+X444369Y741243D01*
+X443878Y741662D01*
+X443328Y741999D01*
+X442732Y742246D01*
+X442104Y742397D01*
+X441461Y742447D01*
+Y746050D01*
+X444718Y746055D01*
+X444871Y746092D01*
+X445016Y746152D01*
+X445150Y746234D01*
+X445270Y746336D01*
+X445372Y746456D01*
+X445454Y746590D01*
+X445515Y746736D01*
+X445551Y746889D01*
+X445561Y747046D01*
+X445551Y753403D01*
+X445515Y753556D01*
+X445454Y753701D01*
+X445372Y753835D01*
+X445270Y753955D01*
+X445150Y754057D01*
+X445016Y754139D01*
+X444871Y754200D01*
+X444718Y754236D01*
+X444561Y754246D01*
+X441461Y754241D01*
+Y772078D01*
+X458458Y772097D01*
+Y748646D01*
+X457385Y748562D01*
+X456328Y748308D01*
+X455324Y747892D01*
+X454397Y747324D01*
+X453571Y746618D01*
+X452865Y745792D01*
+X452297Y744865D01*
+X451881Y743861D01*
+X451627Y742804D01*
+X451542Y741720D01*
+X451627Y740637D01*
+X451881Y739580D01*
+X452297Y738576D01*
+X452865Y737649D01*
+X453571Y736822D01*
+X454397Y736117D01*
+X455324Y735549D01*
+X456328Y735133D01*
+X457385Y734879D01*
+X458458Y734794D01*
+Y694709D01*
+X457385Y694625D01*
+X456328Y694371D01*
+X455324Y693955D01*
+X454397Y693387D01*
+X453571Y692681D01*
+X452865Y691855D01*
+X452297Y690928D01*
+X451881Y689924D01*
+X451627Y688867D01*
+X451542Y687783D01*
+X451627Y686700D01*
+X451881Y685643D01*
+X452297Y684639D01*
+X452865Y683712D01*
+X453571Y682885D01*
+X454397Y682180D01*
+X455324Y681612D01*
+X456328Y681196D01*
+X457385Y680942D01*
+X458458Y680857D01*
+Y661000D01*
+G37*
+G36*
+X441461Y707014D02*X440817Y706964D01*
+X440190Y706813D01*
+X440073Y706764D01*
+X436995Y709842D01*
+X436950Y709895D01*
+X436740Y710074D01*
+X436506Y710218D01*
+X436251Y710323D01*
+X435983Y710387D01*
+X435983Y710387D01*
+X435709Y710409D01*
+X435640Y710404D01*
+X433020D01*
+Y712366D01*
+X433314Y712845D01*
+X433561Y713442D01*
+X433712Y714069D01*
+X433750Y714713D01*
+X433712Y715356D01*
+X433561Y715983D01*
+X433314Y716580D01*
+X433020Y717059D01*
+Y724177D01*
+X433314Y724657D01*
+X433561Y725253D01*
+X433712Y725880D01*
+X433750Y726524D01*
+X433712Y727167D01*
+X433561Y727794D01*
+X433314Y728391D01*
+X433020Y728870D01*
+Y736137D01*
+X433076Y736168D01*
+X433137Y736217D01*
+X433190Y736275D01*
+X433233Y736342D01*
+X433405Y736679D01*
+X433542Y737032D01*
+X433645Y737396D01*
+X433715Y737768D01*
+X433750Y738145D01*
+Y738524D01*
+X433715Y738901D01*
+X433645Y739273D01*
+X433542Y739638D01*
+X433405Y739991D01*
+X433236Y740330D01*
+X433193Y740396D01*
+X433139Y740454D01*
+X433077Y740504D01*
+X433020Y740536D01*
+Y747948D01*
+X433076Y747980D01*
+X433137Y748028D01*
+X433190Y748086D01*
+X433233Y748153D01*
+X433405Y748490D01*
+X433542Y748843D01*
+X433645Y749207D01*
+X433715Y749579D01*
+X433750Y749956D01*
+Y750335D01*
+X433715Y750712D01*
+X433645Y751084D01*
+X433542Y751449D01*
+X433405Y751802D01*
+X433236Y752141D01*
+X433193Y752207D01*
+X433139Y752265D01*
+X433077Y752315D01*
+X433020Y752347D01*
+Y772069D01*
+X441461Y772078D01*
+Y754241D01*
+X438204Y754236D01*
+X438051Y754200D01*
+X437905Y754139D01*
+X437771Y754057D01*
+X437651Y753955D01*
+X437549Y753835D01*
+X437467Y753701D01*
+X437407Y753556D01*
+X437370Y753403D01*
+X437361Y753246D01*
+X437370Y746889D01*
+X437407Y746736D01*
+X437467Y746590D01*
+X437549Y746456D01*
+X437651Y746336D01*
+X437771Y746234D01*
+X437905Y746152D01*
+X438051Y746092D01*
+X438204Y746055D01*
+X438361Y746046D01*
+X441461Y746050D01*
+Y742447D01*
+X440817Y742397D01*
+X440190Y742246D01*
+X439594Y741999D01*
+X439043Y741662D01*
+X438553Y741243D01*
+X438133Y740752D01*
+X437796Y740202D01*
+X437549Y739606D01*
+X437399Y738978D01*
+X437348Y738335D01*
+X437399Y737691D01*
+X437549Y737064D01*
+X437796Y736468D01*
+X438133Y735917D01*
+X438553Y735427D01*
+X439043Y735007D01*
+X439594Y734670D01*
+X440190Y734423D01*
+X440817Y734273D01*
+X441461Y734222D01*
+Y730636D01*
+X440817Y730586D01*
+X440190Y730435D01*
+X439594Y730188D01*
+X439043Y729851D01*
+X438553Y729432D01*
+X438133Y728941D01*
+X437796Y728391D01*
+X437549Y727794D01*
+X437399Y727167D01*
+X437348Y726524D01*
+X437399Y725880D01*
+X437549Y725253D01*
+X437796Y724657D01*
+X438133Y724106D01*
+X438553Y723616D01*
+X439043Y723196D01*
+X439594Y722859D01*
+X440190Y722612D01*
+X440817Y722462D01*
+X441461Y722411D01*
+Y718825D01*
+X440817Y718775D01*
+X440190Y718624D01*
+X439594Y718377D01*
+X439043Y718040D01*
+X438553Y717621D01*
+X438133Y717130D01*
+X437796Y716580D01*
+X437549Y715983D01*
+X437399Y715356D01*
+X437348Y714713D01*
+X437399Y714069D01*
+X437549Y713442D01*
+X437796Y712845D01*
+X438133Y712295D01*
+X438553Y711805D01*
+X439043Y711385D01*
+X439594Y711048D01*
+X440190Y710801D01*
+X440817Y710651D01*
+X441461Y710600D01*
+Y707014D01*
+G37*
+G36*
+X433020Y728870D02*X432977Y728941D01*
+X432558Y729432D01*
+X432067Y729851D01*
+X431517Y730188D01*
+X430920Y730435D01*
+X430293Y730586D01*
+X429651Y730636D01*
+Y734235D01*
+X429839D01*
+X430216Y734270D01*
+X430588Y734339D01*
+X430953Y734443D01*
+X431306Y734579D01*
+X431645Y734748D01*
+X431711Y734791D01*
+X431769Y734845D01*
+X431819Y734907D01*
+X431857Y734976D01*
+X431885Y735050D01*
+X431901Y735128D01*
+X431904Y735207D01*
+X431895Y735286D01*
+X431874Y735362D01*
+X431841Y735434D01*
+X431797Y735500D01*
+X431743Y735558D01*
+X431681Y735608D01*
+X431612Y735646D01*
+X431538Y735674D01*
+X431460Y735690D01*
+X431381Y735693D01*
+X431302Y735684D01*
+X431226Y735663D01*
+X431155Y735628D01*
+X430900Y735498D01*
+X430634Y735395D01*
+X430359Y735317D01*
+X430077Y735264D01*
+X429793Y735238D01*
+X429651D01*
+Y741431D01*
+X429793D01*
+X430077Y741405D01*
+X430359Y741352D01*
+X430634Y741274D01*
+X430900Y741171D01*
+X431157Y741044D01*
+X431227Y741010D01*
+X431303Y740989D01*
+X431381Y740979D01*
+X431460Y740983D01*
+X431537Y740998D01*
+X431611Y741026D01*
+X431679Y741064D01*
+X431741Y741113D01*
+X431794Y741171D01*
+X431838Y741237D01*
+X431871Y741308D01*
+X431892Y741384D01*
+X431901Y741462D01*
+X431897Y741541D01*
+X431882Y741618D01*
+X431854Y741692D01*
+X431816Y741761D01*
+X431767Y741822D01*
+X431709Y741875D01*
+X431643Y741918D01*
+X431306Y742090D01*
+X430953Y742227D01*
+X430588Y742330D01*
+X430216Y742400D01*
+X429839Y742435D01*
+X429651D01*
+Y746046D01*
+X429839D01*
+X430216Y746081D01*
+X430588Y746150D01*
+X430953Y746254D01*
+X431306Y746390D01*
+X431645Y746559D01*
+X431711Y746602D01*
+X431769Y746656D01*
+X431819Y746718D01*
+X431857Y746787D01*
+X431885Y746861D01*
+X431901Y746939D01*
+X431904Y747018D01*
+X431895Y747097D01*
+X431874Y747173D01*
+X431841Y747245D01*
+X431797Y747311D01*
+X431743Y747369D01*
+X431681Y747419D01*
+X431612Y747457D01*
+X431538Y747485D01*
+X431460Y747501D01*
+X431381Y747504D01*
+X431302Y747495D01*
+X431226Y747474D01*
+X431155Y747439D01*
+X430900Y747309D01*
+X430634Y747206D01*
+X430359Y747128D01*
+X430077Y747075D01*
+X429793Y747049D01*
+X429651D01*
+Y753242D01*
+X429793D01*
+X430077Y753216D01*
+X430359Y753164D01*
+X430634Y753085D01*
+X430900Y752982D01*
+X431157Y752855D01*
+X431227Y752821D01*
+X431303Y752800D01*
+X431381Y752791D01*
+X431460Y752794D01*
+X431537Y752809D01*
+X431611Y752837D01*
+X431679Y752876D01*
+X431741Y752924D01*
+X431794Y752982D01*
+X431838Y753048D01*
+X431871Y753119D01*
+X431892Y753195D01*
+X431901Y753273D01*
+X431897Y753352D01*
+X431882Y753429D01*
+X431854Y753503D01*
+X431816Y753572D01*
+X431767Y753633D01*
+X431709Y753686D01*
+X431643Y753729D01*
+X431306Y753901D01*
+X430953Y754038D01*
+X430588Y754141D01*
+X430216Y754211D01*
+X429839Y754246D01*
+X429651D01*
+Y772065D01*
+X433020Y772069D01*
+Y752347D01*
+X433008Y752353D01*
+X432934Y752381D01*
+X432856Y752397D01*
+X432777Y752400D01*
+X432699Y752391D01*
+X432622Y752370D01*
+X432550Y752337D01*
+X432484Y752293D01*
+X432426Y752239D01*
+X432377Y752177D01*
+X432338Y752108D01*
+X432310Y752034D01*
+X432294Y751956D01*
+X432291Y751877D01*
+X432300Y751799D01*
+X432322Y751722D01*
+X432356Y751651D01*
+X432486Y751396D01*
+X432589Y751130D01*
+X432667Y750855D01*
+X432720Y750573D01*
+X432746Y750289D01*
+Y750003D01*
+X432720Y749718D01*
+X432667Y749437D01*
+X432589Y749162D01*
+X432486Y748895D01*
+X432359Y748639D01*
+X432325Y748568D01*
+X432303Y748492D01*
+X432294Y748414D01*
+X432298Y748335D01*
+X432313Y748258D01*
+X432341Y748184D01*
+X432379Y748116D01*
+X432428Y748054D01*
+X432486Y748001D01*
+X432552Y747957D01*
+X432623Y747925D01*
+X432699Y747904D01*
+X432777Y747895D01*
+X432856Y747898D01*
+X432933Y747913D01*
+X433007Y747941D01*
+X433020Y747948D01*
+Y740536D01*
+X433008Y740542D01*
+X432934Y740570D01*
+X432856Y740586D01*
+X432777Y740589D01*
+X432699Y740580D01*
+X432622Y740559D01*
+X432550Y740526D01*
+X432484Y740482D01*
+X432426Y740428D01*
+X432377Y740366D01*
+X432338Y740297D01*
+X432310Y740223D01*
+X432294Y740145D01*
+X432291Y740066D01*
+X432300Y739988D01*
+X432322Y739911D01*
+X432356Y739840D01*
+X432486Y739585D01*
+X432589Y739319D01*
+X432667Y739044D01*
+X432720Y738762D01*
+X432746Y738478D01*
+Y738192D01*
+X432720Y737907D01*
+X432667Y737626D01*
+X432589Y737351D01*
+X432486Y737084D01*
+X432359Y736828D01*
+X432325Y736757D01*
+X432303Y736681D01*
+X432294Y736603D01*
+X432298Y736524D01*
+X432313Y736447D01*
+X432341Y736373D01*
+X432379Y736305D01*
+X432428Y736243D01*
+X432486Y736190D01*
+X432552Y736146D01*
+X432623Y736114D01*
+X432699Y736093D01*
+X432777Y736083D01*
+X432856Y736087D01*
+X432933Y736102D01*
+X433007Y736130D01*
+X433020Y736137D01*
+Y728870D01*
+G37*
+G36*
+Y717059D02*X432977Y717130D01*
+X432558Y717621D01*
+X432067Y718040D01*
+X431517Y718377D01*
+X430920Y718624D01*
+X430293Y718775D01*
+X429651Y718825D01*
+Y722411D01*
+X430293Y722462D01*
+X430920Y722612D01*
+X431517Y722859D01*
+X432067Y723196D01*
+X432558Y723616D01*
+X432977Y724106D01*
+X433020Y724177D01*
+Y717059D01*
+G37*
+G36*
+Y710404D02*X429651D01*
+Y710600D01*
+X430293Y710651D01*
+X430920Y710801D01*
+X431517Y711048D01*
+X432067Y711385D01*
+X432558Y711805D01*
+X432977Y712295D01*
+X433020Y712366D01*
+Y710404D01*
+G37*
+G36*
+X426279Y724177D02*X426322Y724106D01*
+X426742Y723616D01*
+X427232Y723196D01*
+X427783Y722859D01*
+X428379Y722612D01*
+X429006Y722462D01*
+X429650Y722411D01*
+X429651Y722411D01*
+Y718825D01*
+X429650Y718825D01*
+X429006Y718775D01*
+X428379Y718624D01*
+X427783Y718377D01*
+X427232Y718040D01*
+X426742Y717621D01*
+X426322Y717130D01*
+X426279Y717059D01*
+Y724177D01*
+G37*
+G36*
+Y772061D02*X429651Y772065D01*
+Y754246D01*
+X429460D01*
+X429083Y754211D01*
+X428711Y754141D01*
+X428347Y754038D01*
+X427994Y753901D01*
+X427654Y753732D01*
+X427588Y753689D01*
+X427530Y753635D01*
+X427481Y753573D01*
+X427442Y753504D01*
+X427414Y753430D01*
+X427398Y753353D01*
+X427395Y753273D01*
+X427404Y753195D01*
+X427426Y753118D01*
+X427458Y753046D01*
+X427502Y752980D01*
+X427556Y752922D01*
+X427618Y752873D01*
+X427687Y752834D01*
+X427761Y752806D01*
+X427839Y752791D01*
+X427918Y752787D01*
+X427997Y752796D01*
+X428073Y752818D01*
+X428144Y752852D01*
+X428399Y752982D01*
+X428666Y753085D01*
+X428941Y753164D01*
+X429222Y753216D01*
+X429507Y753242D01*
+X429651D01*
+Y747049D01*
+X429507D01*
+X429222Y747075D01*
+X428941Y747128D01*
+X428666Y747206D01*
+X428399Y747309D01*
+X428143Y747437D01*
+X428072Y747471D01*
+X427996Y747492D01*
+X427918Y747501D01*
+X427839Y747498D01*
+X427762Y747482D01*
+X427688Y747454D01*
+X427620Y747416D01*
+X427558Y747367D01*
+X427505Y747309D01*
+X427461Y747243D01*
+X427429Y747172D01*
+X427407Y747096D01*
+X427398Y747018D01*
+X427402Y746939D01*
+X427417Y746862D01*
+X427445Y746788D01*
+X427483Y746720D01*
+X427532Y746658D01*
+X427590Y746605D01*
+X427657Y746563D01*
+X427994Y746390D01*
+X428347Y746254D01*
+X428711Y746150D01*
+X429083Y746081D01*
+X429460Y746046D01*
+X429651D01*
+Y742435D01*
+X429460D01*
+X429083Y742400D01*
+X428711Y742330D01*
+X428347Y742227D01*
+X427994Y742090D01*
+X427654Y741921D01*
+X427588Y741878D01*
+X427530Y741824D01*
+X427481Y741762D01*
+X427442Y741693D01*
+X427414Y741619D01*
+X427398Y741541D01*
+X427395Y741462D01*
+X427404Y741384D01*
+X427426Y741307D01*
+X427458Y741235D01*
+X427502Y741169D01*
+X427556Y741111D01*
+X427618Y741062D01*
+X427687Y741023D01*
+X427761Y740995D01*
+X427839Y740980D01*
+X427918Y740976D01*
+X427997Y740985D01*
+X428073Y741007D01*
+X428144Y741041D01*
+X428399Y741171D01*
+X428666Y741274D01*
+X428941Y741352D01*
+X429222Y741405D01*
+X429507Y741431D01*
+X429651D01*
+Y735238D01*
+X429507D01*
+X429222Y735264D01*
+X428941Y735317D01*
+X428666Y735395D01*
+X428399Y735498D01*
+X428143Y735626D01*
+X428072Y735660D01*
+X427996Y735681D01*
+X427918Y735690D01*
+X427839Y735686D01*
+X427762Y735671D01*
+X427688Y735643D01*
+X427620Y735605D01*
+X427558Y735556D01*
+X427505Y735498D01*
+X427461Y735432D01*
+X427429Y735361D01*
+X427407Y735285D01*
+X427398Y735207D01*
+X427402Y735128D01*
+X427417Y735051D01*
+X427445Y734977D01*
+X427483Y734909D01*
+X427532Y734847D01*
+X427590Y734794D01*
+X427657Y734752D01*
+X427994Y734579D01*
+X428347Y734443D01*
+X428711Y734339D01*
+X429083Y734270D01*
+X429460Y734235D01*
+X429651D01*
+Y730636D01*
+X429650Y730636D01*
+X429006Y730586D01*
+X428379Y730435D01*
+X427783Y730188D01*
+X427232Y729851D01*
+X426742Y729432D01*
+X426322Y728941D01*
+X426279Y728870D01*
+Y736134D01*
+X426291Y736127D01*
+X426365Y736099D01*
+X426443Y736084D01*
+X426522Y736080D01*
+X426601Y736089D01*
+X426677Y736111D01*
+X426749Y736144D01*
+X426815Y736187D01*
+X426873Y736241D01*
+X426923Y736303D01*
+X426961Y736372D01*
+X426989Y736446D01*
+X427005Y736524D01*
+X427008Y736603D01*
+X426999Y736682D01*
+X426978Y736758D01*
+X426943Y736829D01*
+X426813Y737084D01*
+X426710Y737351D01*
+X426632Y737626D01*
+X426579Y737907D01*
+X426553Y738192D01*
+Y738478D01*
+X426579Y738762D01*
+X426632Y739044D01*
+X426710Y739319D01*
+X426813Y739585D01*
+X426941Y739842D01*
+X426975Y739912D01*
+X426996Y739988D01*
+X427005Y740066D01*
+X427001Y740145D01*
+X426986Y740222D01*
+X426958Y740296D01*
+X426920Y740364D01*
+X426871Y740426D01*
+X426813Y740479D01*
+X426747Y740523D01*
+X426676Y740556D01*
+X426600Y740577D01*
+X426522Y740586D01*
+X426443Y740582D01*
+X426366Y740567D01*
+X426292Y740539D01*
+X426279Y740532D01*
+Y747945D01*
+X426291Y747938D01*
+X426365Y747910D01*
+X426443Y747895D01*
+X426522Y747891D01*
+X426601Y747900D01*
+X426677Y747922D01*
+X426749Y747955D01*
+X426815Y747998D01*
+X426873Y748052D01*
+X426923Y748114D01*
+X426961Y748183D01*
+X426989Y748257D01*
+X427005Y748335D01*
+X427008Y748414D01*
+X426999Y748493D01*
+X426978Y748569D01*
+X426943Y748640D01*
+X426813Y748895D01*
+X426710Y749162D01*
+X426632Y749437D01*
+X426579Y749718D01*
+X426553Y750003D01*
+Y750289D01*
+X426579Y750573D01*
+X426632Y750855D01*
+X426710Y751130D01*
+X426813Y751396D01*
+X426941Y751653D01*
+X426975Y751723D01*
+X426996Y751799D01*
+X427005Y751877D01*
+X427001Y751956D01*
+X426986Y752033D01*
+X426958Y752107D01*
+X426920Y752175D01*
+X426871Y752237D01*
+X426813Y752290D01*
+X426747Y752334D01*
+X426676Y752367D01*
+X426600Y752388D01*
+X426522Y752397D01*
+X426443Y752394D01*
+X426366Y752378D01*
+X426292Y752350D01*
+X426279Y752343D01*
+Y772061D01*
+G37*
+G36*
+X429651Y710404D02*X427020D01*
+X426279Y711145D01*
+Y712366D01*
+X426322Y712295D01*
+X426742Y711805D01*
+X427232Y711385D01*
+X427783Y711048D01*
+X428379Y710801D01*
+X429006Y710651D01*
+X429650Y710600D01*
+X429651Y710600D01*
+Y710404D01*
+G37*
+G36*
+X426279Y711145D02*X423954Y713470D01*
+Y772059D01*
+X426279Y772061D01*
+Y752343D01*
+X426224Y752312D01*
+X426162Y752263D01*
+X426109Y752205D01*
+X426067Y752139D01*
+X425894Y751802D01*
+X425758Y751449D01*
+X425654Y751084D01*
+X425585Y750712D01*
+X425550Y750335D01*
+Y749956D01*
+X425585Y749579D01*
+X425654Y749207D01*
+X425758Y748843D01*
+X425894Y748490D01*
+X426063Y748151D01*
+X426106Y748084D01*
+X426160Y748026D01*
+X426222Y747977D01*
+X426279Y747945D01*
+Y740532D01*
+X426224Y740501D01*
+X426162Y740452D01*
+X426109Y740394D01*
+X426067Y740328D01*
+X425894Y739991D01*
+X425758Y739638D01*
+X425654Y739273D01*
+X425585Y738901D01*
+X425550Y738524D01*
+Y738145D01*
+X425585Y737768D01*
+X425654Y737396D01*
+X425758Y737032D01*
+X425894Y736679D01*
+X426063Y736340D01*
+X426106Y736273D01*
+X426160Y736215D01*
+X426222Y736166D01*
+X426279Y736134D01*
+Y728870D01*
+X425985Y728391D01*
+X425738Y727794D01*
+X425588Y727167D01*
+X425537Y726524D01*
+X425588Y725880D01*
+X425738Y725253D01*
+X425985Y724657D01*
+X426279Y724177D01*
+Y717059D01*
+X425985Y716580D01*
+X425738Y715983D01*
+X425588Y715356D01*
+X425537Y714713D01*
+X425588Y714069D01*
+X425738Y713442D01*
+X425985Y712845D01*
+X426279Y712366D01*
+Y711145D01*
+G37*
+G36*
+X441461Y661000D02*X429643D01*
+Y675167D01*
+X429650Y675167D01*
+X430293Y675218D01*
+X430920Y675368D01*
+X431517Y675615D01*
+X432067Y675952D01*
+X432558Y676371D01*
+X432977Y676862D01*
+X433314Y677412D01*
+X433561Y678009D01*
+X433712Y678636D01*
+X433750Y679280D01*
+X433712Y679923D01*
+X433561Y680550D01*
+X433314Y681147D01*
+X432977Y681697D01*
+X432558Y682188D01*
+X432067Y682607D01*
+X431517Y682944D01*
+X430920Y683191D01*
+X430293Y683342D01*
+X429650Y683392D01*
+X429643Y683392D01*
+Y686978D01*
+X429650Y686978D01*
+X430293Y687029D01*
+X430920Y687179D01*
+X431517Y687426D01*
+X432067Y687763D01*
+X432558Y688182D01*
+X432977Y688673D01*
+X433314Y689223D01*
+X433561Y689820D01*
+X433712Y690447D01*
+X433750Y691091D01*
+X433712Y691734D01*
+X433561Y692361D01*
+X433314Y692958D01*
+X432977Y693508D01*
+X432558Y693999D01*
+X432067Y694418D01*
+X431517Y694755D01*
+X430920Y695002D01*
+X430293Y695153D01*
+X429650Y695203D01*
+X429643Y695203D01*
+Y698789D01*
+X429650Y698789D01*
+X430293Y698840D01*
+X430920Y698990D01*
+X431517Y699237D01*
+X432067Y699574D01*
+X432558Y699993D01*
+X432977Y700484D01*
+X433314Y701034D01*
+X433561Y701631D01*
+X433712Y702258D01*
+X433750Y702902D01*
+X433712Y703545D01*
+X433561Y704172D01*
+X433314Y704769D01*
+X432977Y705319D01*
+X432558Y705810D01*
+X432067Y706229D01*
+X431517Y706566D01*
+X430920Y706813D01*
+X430543Y706904D01*
+X434984D01*
+X437598Y704290D01*
+X437549Y704172D01*
+X437399Y703545D01*
+X437348Y702902D01*
+X437399Y702258D01*
+X437549Y701631D01*
+X437796Y701034D01*
+X438133Y700484D01*
+X438553Y699993D01*
+X439043Y699574D01*
+X439594Y699237D01*
+X440190Y698990D01*
+X440817Y698840D01*
+X441461Y698789D01*
+Y695203D01*
+X440817Y695153D01*
+X440190Y695002D01*
+X439594Y694755D01*
+X439043Y694418D01*
+X438553Y693999D01*
+X438133Y693508D01*
+X437796Y692958D01*
+X437549Y692361D01*
+X437399Y691734D01*
+X437348Y691091D01*
+X437399Y690447D01*
+X437549Y689820D01*
+X437796Y689223D01*
+X438133Y688673D01*
+X438553Y688182D01*
+X439043Y687763D01*
+X439594Y687426D01*
+X440190Y687179D01*
+X440817Y687029D01*
+X441461Y686978D01*
+Y683392D01*
+X440817Y683342D01*
+X440190Y683191D01*
+X439594Y682944D01*
+X439043Y682607D01*
+X438553Y682188D01*
+X438133Y681697D01*
+X437796Y681147D01*
+X437549Y680550D01*
+X437399Y679923D01*
+X437348Y679280D01*
+X437399Y678636D01*
+X437549Y678009D01*
+X437796Y677412D01*
+X438133Y676862D01*
+X438553Y676371D01*
+X439043Y675952D01*
+X439594Y675615D01*
+X440190Y675368D01*
+X440817Y675218D01*
+X441461Y675167D01*
+Y661000D01*
+G37*
+G36*
+X429643D02*X423954D01*
+Y708520D01*
+X425009Y707465D01*
+X425054Y707412D01*
+X425263Y707233D01*
+X425498Y707089D01*
+X425753Y706984D01*
+X426021Y706920D01*
+X426021Y706920D01*
+X426295Y706898D01*
+X426364Y706904D01*
+X428756D01*
+X428379Y706813D01*
+X427783Y706566D01*
+X427232Y706229D01*
+X426742Y705810D01*
+X426322Y705319D01*
+X425985Y704769D01*
+X425738Y704172D01*
+X425588Y703545D01*
+X425537Y702902D01*
+X425588Y702258D01*
+X425738Y701631D01*
+X425985Y701034D01*
+X426322Y700484D01*
+X426742Y699993D01*
+X427232Y699574D01*
+X427783Y699237D01*
+X428379Y698990D01*
+X429006Y698840D01*
+X429643Y698789D01*
+Y695203D01*
+X429006Y695153D01*
+X428379Y695002D01*
+X427783Y694755D01*
+X427232Y694418D01*
+X426742Y693999D01*
+X426322Y693508D01*
+X425985Y692958D01*
+X425738Y692361D01*
+X425588Y691734D01*
+X425537Y691091D01*
+X425588Y690447D01*
+X425738Y689820D01*
+X425985Y689223D01*
+X426322Y688673D01*
+X426742Y688182D01*
+X427232Y687763D01*
+X427783Y687426D01*
+X428379Y687179D01*
+X429006Y687029D01*
+X429643Y686978D01*
+Y683392D01*
+X429006Y683342D01*
+X428379Y683191D01*
+X427783Y682944D01*
+X427232Y682607D01*
+X426742Y682188D01*
+X426322Y681697D01*
+X425985Y681147D01*
+X425738Y680550D01*
+X425588Y679923D01*
+X425537Y679280D01*
+X425588Y678636D01*
+X425738Y678009D01*
+X425985Y677412D01*
+X426322Y676862D01*
+X426742Y676371D01*
+X427232Y675952D01*
+X427783Y675615D01*
+X428379Y675368D01*
+X429006Y675218D01*
+X429643Y675167D01*
+Y661000D01*
+G37*
+G36*
+X408873Y772042D02*X423954Y772059D01*
+Y713470D01*
+X423577Y713847D01*
+Y717868D01*
+X423582Y717937D01*
+X423561Y718211D01*
+X423561Y718212D01*
+X423496Y718479D01*
+X423391Y718734D01*
+X423247Y718969D01*
+X423068Y719178D01*
+X423016Y719223D01*
+X419435Y722803D01*
+X419454Y723110D01*
+X419428Y723550D01*
+X419325Y723978D01*
+X419156Y724385D01*
+X418926Y724761D01*
+X418640Y725096D01*
+X418304Y725382D01*
+X417929Y725613D01*
+X417521Y725781D01*
+X417093Y725884D01*
+X416654Y725919D01*
+X416214Y725884D01*
+X415786Y725781D01*
+X415378Y725613D01*
+X415003Y725382D01*
+X414668Y725096D01*
+X414466Y724860D01*
+X410246D01*
+X410242Y727125D01*
+X410205Y727278D01*
+X410145Y727423D01*
+X410063Y727557D01*
+X409960Y727677D01*
+X409841Y727779D01*
+X409707Y727862D01*
+X409561Y727922D01*
+X409408Y727958D01*
+X409251Y727968D01*
+X408873Y727967D01*
+Y734639D01*
+X409408Y734640D01*
+X409561Y734676D01*
+X409707Y734737D01*
+X409841Y734819D01*
+X409960Y734921D01*
+X410063Y735041D01*
+X410145Y735175D01*
+X410205Y735320D01*
+X410242Y735473D01*
+X410251Y735630D01*
+X410248Y737226D01*
+X410411D01*
+X410612Y736990D01*
+X410948Y736704D01*
+X411323Y736474D01*
+X411731Y736305D01*
+X412159Y736202D01*
+X412598Y736168D01*
+X413038Y736202D01*
+X413466Y736305D01*
+X413874Y736474D01*
+X414249Y736704D01*
+X414584Y736990D01*
+X414871Y737326D01*
+X415101Y737701D01*
+X415270Y738108D01*
+X415372Y738537D01*
+X415398Y738976D01*
+X415372Y739416D01*
+X415270Y739844D01*
+X415101Y740251D01*
+X414871Y740627D01*
+X414584Y740962D01*
+X414249Y741249D01*
+X413874Y741479D01*
+X413737Y741535D01*
+X413874Y741592D01*
+X414249Y741822D01*
+X414584Y742108D01*
+X414871Y742444D01*
+X415101Y742819D01*
+X415270Y743227D01*
+X415372Y743655D01*
+X415398Y744094D01*
+X415372Y744534D01*
+X415270Y744962D01*
+X415101Y745370D01*
+X414871Y745745D01*
+X414584Y746080D01*
+X414249Y746367D01*
+X413874Y746597D01*
+X413466Y746766D01*
+X413038Y746869D01*
+X412598Y746903D01*
+X412159Y746869D01*
+X411731Y746766D01*
+X411323Y746597D01*
+X410948Y746367D01*
+X410612Y746080D01*
+X410411Y745844D01*
+X410246D01*
+X410242Y747991D01*
+X410205Y748144D01*
+X410145Y748290D01*
+X410063Y748424D01*
+X409960Y748544D01*
+X409841Y748646D01*
+X409707Y748728D01*
+X409561Y748788D01*
+X409408Y748825D01*
+X409251Y748834D01*
+X408873Y748834D01*
+Y772042D01*
+G37*
+G36*
+X423954Y661000D02*X422000D01*
+Y608612D01*
+X414029Y608607D01*
+X413876Y608570D01*
+X413731Y608510D01*
+X413597Y608428D01*
+X413477Y608325D01*
+X413375Y608206D01*
+X413292Y608072D01*
+X413232Y607926D01*
+X413195Y607773D01*
+X413186Y607616D01*
+X413195Y588959D01*
+X413232Y588806D01*
+X413292Y588661D01*
+X413375Y588527D01*
+X413477Y588407D01*
+X413597Y588305D01*
+X413731Y588222D01*
+X413876Y588162D01*
+X414029Y588125D01*
+X414186Y588116D01*
+X422000Y588121D01*
+Y584000D01*
+X408873D01*
+Y644942D01*
+X409126Y645047D01*
+X409683Y645388D01*
+X410179Y645813D01*
+X410604Y646309D01*
+X410945Y646866D01*
+X411195Y647470D01*
+X411347Y648105D01*
+X411386Y648756D01*
+X411347Y649407D01*
+X411195Y650042D01*
+X410945Y650646D01*
+X410604Y651203D01*
+X410179Y651699D01*
+X409683Y652123D01*
+X409126Y652465D01*
+X408873Y652569D01*
+Y713772D01*
+X409408Y713773D01*
+X409561Y713810D01*
+X409707Y713870D01*
+X409841Y713952D01*
+X409960Y714054D01*
+X410063Y714174D01*
+X410145Y714308D01*
+X410205Y714454D01*
+X410242Y714607D01*
+X410251Y714764D01*
+X410248Y716360D01*
+X412773D01*
+X412975Y716124D01*
+X413310Y715838D01*
+X413686Y715608D01*
+X414093Y715439D01*
+X414521Y715336D01*
+X414961Y715302D01*
+X415400Y715336D01*
+X415829Y715439D01*
+X416236Y715608D01*
+X416612Y715838D01*
+X416947Y716124D01*
+X417233Y716459D01*
+X417463Y716835D01*
+X417632Y717242D01*
+X417735Y717671D01*
+X417761Y718110D01*
+X417735Y718550D01*
+X417632Y718978D01*
+X417463Y719385D01*
+X417233Y719761D01*
+X416947Y720096D01*
+X416702Y720305D01*
+X416963Y720326D01*
+X420077Y717212D01*
+Y713191D01*
+X420071Y713122D01*
+X420093Y712848D01*
+X420093Y712847D01*
+X420157Y712580D01*
+X420263Y712325D01*
+X420407Y712090D01*
+X420586Y711881D01*
+X420638Y711836D01*
+X423954Y708520D01*
+Y661000D01*
+G37*
+G36*
+X408873Y584000D02*X394230D01*
+Y613891D01*
+X394736Y613851D01*
+X395521Y613912D01*
+X396286Y614096D01*
+X397013Y614397D01*
+X397684Y614809D01*
+X398283Y615320D01*
+X398794Y615918D01*
+X399205Y616589D01*
+X399506Y617316D01*
+X399690Y618082D01*
+X399736Y618866D01*
+X399690Y619651D01*
+X399506Y620416D01*
+X399205Y621143D01*
+X398794Y621814D01*
+X398283Y622413D01*
+X397684Y622924D01*
+X397013Y623335D01*
+X396286Y623636D01*
+X395521Y623820D01*
+X394736Y623882D01*
+X394230Y623842D01*
+Y685940D01*
+X394271Y685955D01*
+X394340Y685994D01*
+X394402Y686043D01*
+X394455Y686101D01*
+X394498Y686166D01*
+X394530Y686238D01*
+X394606Y686471D01*
+X394660Y686711D01*
+X394692Y686955D01*
+X394703Y687200D01*
+X394692Y687445D01*
+X394660Y687689D01*
+X394606Y687929D01*
+X394532Y688163D01*
+X394500Y688235D01*
+X394456Y688300D01*
+X394403Y688359D01*
+X394341Y688408D01*
+X394272Y688446D01*
+X394230Y688462D01*
+Y699050D01*
+X394873D01*
+X395000Y699040D01*
+X395510Y699080D01*
+X396007Y699200D01*
+X396480Y699395D01*
+X396916Y699663D01*
+X397305Y699995D01*
+X397388Y700092D01*
+X399498Y702202D01*
+X399837Y702584D01*
+X400105Y703020D01*
+X400300Y703493D01*
+X400420Y703990D01*
+X400460Y704500D01*
+X400420Y705010D01*
+X400300Y705507D01*
+X400105Y705980D01*
+X399837Y706416D01*
+X399505Y706805D01*
+X399116Y707137D01*
+X398680Y707405D01*
+X398207Y707600D01*
+X397710Y707720D01*
+X397200Y707760D01*
+X396690Y707720D01*
+X396193Y707600D01*
+X395720Y707405D01*
+X395284Y707137D01*
+X394902Y706798D01*
+X394230Y706126D01*
+Y706914D01*
+X394298Y706928D01*
+X394371Y706955D01*
+X394440Y706994D01*
+X394502Y707043D01*
+X394555Y707101D01*
+X394598Y707166D01*
+X394630Y707238D01*
+X394706Y707471D01*
+X394760Y707711D01*
+X394792Y707955D01*
+X394803Y708200D01*
+X394792Y708445D01*
+X394760Y708689D01*
+X394706Y708929D01*
+X394632Y709163D01*
+X394600Y709235D01*
+X394556Y709300D01*
+X394503Y709359D01*
+X394441Y709408D01*
+X394372Y709446D01*
+X394298Y709474D01*
+X394230Y709488D01*
+Y721906D01*
+X394303Y722025D01*
+X394471Y722432D01*
+X394574Y722861D01*
+X394600Y723300D01*
+X394574Y723739D01*
+X394471Y724168D01*
+X394303Y724575D01*
+X394230Y724694D01*
+Y727714D01*
+X394298Y727728D01*
+X394371Y727755D01*
+X394440Y727794D01*
+X394502Y727843D01*
+X394555Y727901D01*
+X394598Y727966D01*
+X394630Y728038D01*
+X394706Y728271D01*
+X394760Y728511D01*
+X394792Y728755D01*
+X394803Y729000D01*
+X394792Y729245D01*
+X394760Y729489D01*
+X394706Y729729D01*
+X394632Y729963D01*
+X394600Y730035D01*
+X394556Y730100D01*
+X394503Y730159D01*
+X394441Y730208D01*
+X394372Y730246D01*
+X394298Y730274D01*
+X394230Y730288D01*
+Y742306D01*
+X394303Y742425D01*
+X394471Y742832D01*
+X394574Y743261D01*
+X394600Y743700D01*
+X394574Y744139D01*
+X394471Y744568D01*
+X394303Y744975D01*
+X394230Y745094D01*
+Y754229D01*
+X394255Y754258D01*
+X395308Y755977D01*
+X396080Y757840D01*
+X396551Y759801D01*
+X396669Y761811D01*
+X396551Y763821D01*
+X396080Y765782D01*
+X395308Y767645D01*
+X394255Y769364D01*
+X394230Y769393D01*
+Y772026D01*
+X408873Y772042D01*
+Y748834D01*
+X403190Y748825D01*
+X403037Y748788D01*
+X402892Y748728D01*
+X402758Y748646D01*
+X402638Y748544D01*
+X402536Y748424D01*
+X402453Y748290D01*
+X402393Y748144D01*
+X402356Y747991D01*
+X402347Y747834D01*
+X402356Y742559D01*
+X402393Y742406D01*
+X402453Y742261D01*
+X402536Y742127D01*
+X402638Y742007D01*
+X402758Y741905D01*
+X402892Y741823D01*
+X403037Y741762D01*
+X403162Y741732D01*
+X403037Y741702D01*
+X402892Y741642D01*
+X402758Y741560D01*
+X402638Y741458D01*
+X402536Y741338D01*
+X402453Y741204D01*
+X402393Y741058D01*
+X402356Y740905D01*
+X402347Y740748D01*
+X402356Y735473D01*
+X402393Y735320D01*
+X402453Y735175D01*
+X402536Y735041D01*
+X402638Y734921D01*
+X402758Y734819D01*
+X402892Y734737D01*
+X403037Y734676D01*
+X403190Y734640D01*
+X403347Y734630D01*
+X408873Y734639D01*
+Y727967D01*
+X403190Y727958D01*
+X403037Y727922D01*
+X402892Y727862D01*
+X402758Y727779D01*
+X402638Y727677D01*
+X402536Y727557D01*
+X402453Y727423D01*
+X402393Y727278D01*
+X402356Y727125D01*
+X402347Y726968D01*
+X402356Y721693D01*
+X402393Y721540D01*
+X402453Y721394D01*
+X402536Y721260D01*
+X402638Y721140D01*
+X402758Y721038D01*
+X402892Y720956D01*
+X403037Y720896D01*
+X403162Y720866D01*
+X403037Y720836D01*
+X402892Y720776D01*
+X402758Y720693D01*
+X402638Y720591D01*
+X402536Y720471D01*
+X402453Y720337D01*
+X402393Y720192D01*
+X402356Y720039D01*
+X402347Y719882D01*
+X402356Y714607D01*
+X402393Y714454D01*
+X402453Y714308D01*
+X402536Y714174D01*
+X402638Y714054D01*
+X402758Y713952D01*
+X402892Y713870D01*
+X403037Y713810D01*
+X403190Y713773D01*
+X403347Y713764D01*
+X408873Y713772D01*
+Y652569D01*
+X408522Y652715D01*
+X407887Y652867D01*
+X407236Y652918D01*
+X406585Y652867D01*
+X405950Y652715D01*
+X405347Y652465D01*
+X404790Y652123D01*
+X404293Y651699D01*
+X403869Y651203D01*
+X403527Y650646D01*
+X403278Y650042D01*
+X403125Y649407D01*
+X403074Y648756D01*
+X403125Y648105D01*
+X403278Y647470D01*
+X403527Y646866D01*
+X403869Y646309D01*
+X404293Y645813D01*
+X404790Y645388D01*
+X405347Y645047D01*
+X405950Y644797D01*
+X406585Y644645D01*
+X407236Y644594D01*
+X407887Y644645D01*
+X408522Y644797D01*
+X408873Y644942D01*
+Y584000D01*
+G37*
+G36*
+X394230Y769393D02*X392945Y770898D01*
+X392001Y771704D01*
+Y772024D01*
+X394230Y772026D01*
+Y769393D01*
+G37*
+G36*
+Y745094D02*X394072Y745351D01*
+X393786Y745686D01*
+X393451Y745972D01*
+X393075Y746203D01*
+X392668Y746371D01*
+X392239Y746474D01*
+X392001Y746493D01*
+Y751918D01*
+X392945Y752724D01*
+X394230Y754229D01*
+Y745094D01*
+G37*
+G36*
+Y724694D02*X394072Y724951D01*
+X393786Y725286D01*
+X393451Y725572D01*
+X393075Y725803D01*
+X392668Y725971D01*
+X392239Y726074D01*
+X392001Y726093D01*
+Y726197D01*
+X392245Y726208D01*
+X392489Y726240D01*
+X392729Y726294D01*
+X392963Y726368D01*
+X393035Y726400D01*
+X393100Y726444D01*
+X393159Y726497D01*
+X393208Y726559D01*
+X393246Y726628D01*
+X393274Y726702D01*
+X393290Y726779D01*
+X393293Y726858D01*
+X393284Y726937D01*
+X393263Y727013D01*
+X393230Y727085D01*
+X393186Y727150D01*
+X393133Y727209D01*
+X393071Y727258D01*
+X393002Y727296D01*
+X392928Y727324D01*
+X392851Y727340D01*
+X392772Y727343D01*
+X392693Y727334D01*
+X392618Y727311D01*
+X392468Y727262D01*
+X392314Y727228D01*
+X392158Y727207D01*
+X392001Y727200D01*
+Y730800D01*
+X392158Y730793D01*
+X392314Y730772D01*
+X392468Y730738D01*
+X392618Y730690D01*
+X392694Y730668D01*
+X392772Y730659D01*
+X392850Y730662D01*
+X392927Y730678D01*
+X393001Y730705D01*
+X393070Y730744D01*
+X393131Y730793D01*
+X393185Y730851D01*
+X393228Y730916D01*
+X393261Y730988D01*
+X393282Y731064D01*
+X393291Y731142D01*
+X393288Y731220D01*
+X393272Y731298D01*
+X393245Y731371D01*
+X393206Y731440D01*
+X393157Y731502D01*
+X393099Y731555D01*
+X393034Y731598D01*
+X392962Y731630D01*
+X392729Y731706D01*
+X392489Y731760D01*
+X392245Y731792D01*
+X392001Y731803D01*
+Y740907D01*
+X392239Y740926D01*
+X392668Y741029D01*
+X393075Y741197D01*
+X393451Y741428D01*
+X393786Y741714D01*
+X394072Y742049D01*
+X394230Y742306D01*
+Y730288D01*
+X394221Y730290D01*
+X394142Y730293D01*
+X394063Y730284D01*
+X393987Y730263D01*
+X393915Y730230D01*
+X393850Y730186D01*
+X393791Y730133D01*
+X393742Y730071D01*
+X393704Y730002D01*
+X393676Y729928D01*
+X393660Y729851D01*
+X393657Y729772D01*
+X393666Y729693D01*
+X393689Y729618D01*
+X393738Y729468D01*
+X393772Y729314D01*
+X393793Y729158D01*
+X393800Y729000D01*
+X393793Y728842D01*
+X393772Y728686D01*
+X393738Y728532D01*
+X393690Y728382D01*
+X393668Y728306D01*
+X393659Y728228D01*
+X393662Y728150D01*
+X393678Y728073D01*
+X393705Y727999D01*
+X393744Y727930D01*
+X393793Y727869D01*
+X393851Y727815D01*
+X393916Y727772D01*
+X393988Y727739D01*
+X394064Y727718D01*
+X394142Y727709D01*
+X394220Y727712D01*
+X394230Y727714D01*
+Y724694D01*
+G37*
+G36*
+Y706126D02*X393654Y705550D01*
+X392906D01*
+X392963Y705568D01*
+X393035Y705600D01*
+X393100Y705644D01*
+X393159Y705697D01*
+X393208Y705759D01*
+X393246Y705828D01*
+X393274Y705902D01*
+X393290Y705979D01*
+X393293Y706058D01*
+X393284Y706137D01*
+X393263Y706213D01*
+X393230Y706285D01*
+X393186Y706350D01*
+X393133Y706409D01*
+X393071Y706458D01*
+X393002Y706496D01*
+X392928Y706524D01*
+X392851Y706540D01*
+X392772Y706543D01*
+X392693Y706534D01*
+X392618Y706511D01*
+X392468Y706462D01*
+X392314Y706428D01*
+X392158Y706407D01*
+X392001Y706400D01*
+Y710000D01*
+X392158Y709993D01*
+X392314Y709972D01*
+X392468Y709938D01*
+X392618Y709890D01*
+X392694Y709868D01*
+X392772Y709859D01*
+X392850Y709862D01*
+X392927Y709878D01*
+X393001Y709905D01*
+X393070Y709944D01*
+X393131Y709993D01*
+X393185Y710051D01*
+X393228Y710116D01*
+X393261Y710188D01*
+X393282Y710264D01*
+X393291Y710342D01*
+X393288Y710420D01*
+X393272Y710498D01*
+X393245Y710571D01*
+X393206Y710640D01*
+X393157Y710702D01*
+X393099Y710755D01*
+X393034Y710798D01*
+X392962Y710830D01*
+X392729Y710906D01*
+X392489Y710960D01*
+X392245Y710992D01*
+X392001Y711003D01*
+Y720507D01*
+X392239Y720526D01*
+X392668Y720629D01*
+X393075Y720797D01*
+X393451Y721028D01*
+X393786Y721314D01*
+X394072Y721649D01*
+X394230Y721906D01*
+Y709488D01*
+X394221Y709490D01*
+X394142Y709493D01*
+X394063Y709484D01*
+X393987Y709463D01*
+X393915Y709430D01*
+X393850Y709386D01*
+X393791Y709333D01*
+X393742Y709271D01*
+X393704Y709202D01*
+X393676Y709128D01*
+X393660Y709051D01*
+X393657Y708972D01*
+X393666Y708893D01*
+X393689Y708818D01*
+X393738Y708668D01*
+X393772Y708514D01*
+X393793Y708358D01*
+X393800Y708200D01*
+X393793Y708042D01*
+X393772Y707886D01*
+X393738Y707732D01*
+X393690Y707582D01*
+X393668Y707506D01*
+X393659Y707428D01*
+X393662Y707350D01*
+X393678Y707273D01*
+X393705Y707199D01*
+X393744Y707130D01*
+X393793Y707069D01*
+X393851Y707015D01*
+X393916Y706972D01*
+X393988Y706939D01*
+X394064Y706918D01*
+X394142Y706909D01*
+X394220Y706912D01*
+X394230Y706914D01*
+Y706126D01*
+G37*
+G36*
+Y623842D02*X393952Y623820D01*
+X393186Y623636D01*
+X392459Y623335D01*
+X392001Y623054D01*
+Y684402D01*
+X392145Y684408D01*
+X392389Y684440D01*
+X392629Y684494D01*
+X392863Y684568D01*
+X392935Y684600D01*
+X393000Y684644D01*
+X393059Y684697D01*
+X393108Y684759D01*
+X393146Y684828D01*
+X393174Y684902D01*
+X393190Y684979D01*
+X393193Y685058D01*
+X393184Y685137D01*
+X393163Y685213D01*
+X393130Y685285D01*
+X393086Y685350D01*
+X393033Y685409D01*
+X392971Y685458D01*
+X392902Y685496D01*
+X392828Y685524D01*
+X392751Y685540D01*
+X392672Y685543D01*
+X392593Y685534D01*
+X392518Y685511D01*
+X392368Y685462D01*
+X392214Y685428D01*
+X392058Y685407D01*
+X392001Y685404D01*
+Y688996D01*
+X392058Y688993D01*
+X392214Y688972D01*
+X392368Y688938D01*
+X392518Y688890D01*
+X392594Y688868D01*
+X392672Y688859D01*
+X392750Y688862D01*
+X392827Y688878D01*
+X392901Y688905D01*
+X392970Y688944D01*
+X393031Y688993D01*
+X393085Y689051D01*
+X393128Y689116D01*
+X393161Y689188D01*
+X393182Y689264D01*
+X393191Y689342D01*
+X393188Y689420D01*
+X393172Y689498D01*
+X393145Y689571D01*
+X393106Y689640D01*
+X393057Y689702D01*
+X392999Y689755D01*
+X392934Y689798D01*
+X392862Y689830D01*
+X392629Y689906D01*
+X392389Y689960D01*
+X392145Y689992D01*
+X392001Y689998D01*
+Y697905D01*
+X393146Y699050D01*
+X394230D01*
+Y688462D01*
+X394198Y688474D01*
+X394121Y688490D01*
+X394042Y688493D01*
+X393963Y688484D01*
+X393887Y688463D01*
+X393815Y688430D01*
+X393750Y688386D01*
+X393691Y688333D01*
+X393642Y688271D01*
+X393604Y688202D01*
+X393576Y688128D01*
+X393560Y688051D01*
+X393557Y687972D01*
+X393566Y687893D01*
+X393589Y687818D01*
+X393638Y687668D01*
+X393672Y687514D01*
+X393693Y687358D01*
+X393700Y687200D01*
+X393693Y687042D01*
+X393672Y686886D01*
+X393638Y686732D01*
+X393590Y686582D01*
+X393568Y686506D01*
+X393559Y686428D01*
+X393562Y686350D01*
+X393578Y686273D01*
+X393605Y686199D01*
+X393644Y686130D01*
+X393693Y686069D01*
+X393751Y686015D01*
+X393816Y685972D01*
+X393888Y685939D01*
+X393964Y685918D01*
+X394042Y685909D01*
+X394120Y685912D01*
+X394198Y685928D01*
+X394230Y685940D01*
+Y623842D01*
+G37*
+G36*
+Y584000D02*X392001D01*
+Y614678D01*
+X392459Y614397D01*
+X393186Y614096D01*
+X393952Y613912D01*
+X394230Y613891D01*
+Y584000D01*
+G37*
+G36*
+X392001Y771704D02*X391627Y772024D01*
+X392001Y772024D01*
+Y771704D01*
+G37*
+G36*
+Y746493D02*X391800Y746509D01*
+X391361Y746474D01*
+X390932Y746371D01*
+X390525Y746203D01*
+X390149Y745972D01*
+X389814Y745686D01*
+X389528Y745351D01*
+X389297Y744975D01*
+X389129Y744568D01*
+X389026Y744139D01*
+X388991Y743700D01*
+X389016Y743391D01*
+X388182Y742557D01*
+X388181Y743129D01*
+X388144Y743282D01*
+X388084Y743427D01*
+X388034Y743510D01*
+Y749674D01*
+X389692Y750361D01*
+X391412Y751415D01*
+X392001Y751918D01*
+Y746493D01*
+G37*
+G36*
+Y726093D02*X391800Y726109D01*
+X391361Y726074D01*
+X390932Y725971D01*
+X390525Y725803D01*
+X390149Y725572D01*
+X389814Y725286D01*
+X389770Y725235D01*
+Y727712D01*
+X389779Y727710D01*
+X389858Y727707D01*
+X389937Y727716D01*
+X390013Y727737D01*
+X390085Y727770D01*
+X390150Y727814D01*
+X390209Y727867D01*
+X390258Y727929D01*
+X390296Y727998D01*
+X390324Y728072D01*
+X390340Y728149D01*
+X390343Y728228D01*
+X390334Y728307D01*
+X390311Y728382D01*
+X390262Y728532D01*
+X390228Y728686D01*
+X390207Y728842D01*
+X390200Y729000D01*
+X390207Y729158D01*
+X390228Y729314D01*
+X390262Y729468D01*
+X390310Y729618D01*
+X390332Y729694D01*
+X390341Y729772D01*
+X390338Y729850D01*
+X390322Y729927D01*
+X390295Y730001D01*
+X390256Y730070D01*
+X390207Y730131D01*
+X390149Y730185D01*
+X390084Y730228D01*
+X390012Y730261D01*
+X389936Y730282D01*
+X389858Y730291D01*
+X389780Y730288D01*
+X389770Y730286D01*
+Y739213D01*
+X389941Y739359D01*
+X389986Y739411D01*
+X391491Y740916D01*
+X391800Y740891D01*
+X392001Y740907D01*
+Y731803D01*
+X392000Y731803D01*
+X391755Y731792D01*
+X391511Y731760D01*
+X391271Y731706D01*
+X391037Y731632D01*
+X390965Y731600D01*
+X390900Y731556D01*
+X390841Y731503D01*
+X390792Y731441D01*
+X390754Y731372D01*
+X390726Y731298D01*
+X390710Y731221D01*
+X390707Y731142D01*
+X390716Y731063D01*
+X390737Y730987D01*
+X390770Y730915D01*
+X390814Y730850D01*
+X390867Y730791D01*
+X390929Y730742D01*
+X390998Y730704D01*
+X391072Y730676D01*
+X391149Y730660D01*
+X391228Y730657D01*
+X391307Y730666D01*
+X391382Y730689D01*
+X391532Y730738D01*
+X391686Y730772D01*
+X391842Y730793D01*
+X392000Y730800D01*
+X392001Y730800D01*
+Y727200D01*
+X392000Y727200D01*
+X391842Y727207D01*
+X391686Y727228D01*
+X391532Y727262D01*
+X391382Y727310D01*
+X391306Y727332D01*
+X391228Y727341D01*
+X391150Y727338D01*
+X391073Y727322D01*
+X390999Y727295D01*
+X390930Y727256D01*
+X390869Y727207D01*
+X390815Y727149D01*
+X390772Y727084D01*
+X390739Y727012D01*
+X390718Y726936D01*
+X390709Y726858D01*
+X390712Y726780D01*
+X390728Y726702D01*
+X390755Y726629D01*
+X390794Y726560D01*
+X390843Y726498D01*
+X390901Y726445D01*
+X390966Y726402D01*
+X391038Y726370D01*
+X391271Y726294D01*
+X391511Y726240D01*
+X391755Y726208D01*
+X392000Y726197D01*
+X392001Y726197D01*
+Y726093D01*
+G37*
+G36*
+X389770Y725235D02*X389528Y724951D01*
+X389297Y724575D01*
+X389129Y724168D01*
+X389026Y723739D01*
+X388991Y723300D01*
+X389016Y722991D01*
+X388688Y722663D01*
+X388681Y722666D01*
+X388528Y722703D01*
+X388371Y722712D01*
+X388034Y722712D01*
+Y730231D01*
+X388084Y730313D01*
+X388144Y730458D01*
+X388181Y730611D01*
+X388190Y730768D01*
+X388189Y731651D01*
+X388215Y731658D01*
+X388470Y731763D01*
+X388705Y731907D01*
+X388914Y732086D01*
+X389093Y732295D01*
+X389237Y732530D01*
+X389342Y732785D01*
+X389407Y733053D01*
+X389428Y733327D01*
+X389407Y733602D01*
+X389342Y733870D01*
+X389237Y734124D01*
+X389093Y734359D01*
+X388914Y734568D01*
+X388705Y734747D01*
+X388470Y734891D01*
+X388215Y734997D01*
+X388183Y735004D01*
+X388181Y736043D01*
+X388144Y736196D01*
+X388084Y736341D01*
+X388034Y736424D01*
+Y737317D01*
+X388084Y737399D01*
+X388144Y737544D01*
+X388181Y737697D01*
+X388190Y737854D01*
+X388188Y738850D01*
+X388631D01*
+X388700Y738845D01*
+X388974Y738866D01*
+X388975Y738866D01*
+X389242Y738931D01*
+X389497Y739036D01*
+X389732Y739180D01*
+X389770Y739213D01*
+Y730286D01*
+X389702Y730272D01*
+X389629Y730245D01*
+X389560Y730206D01*
+X389498Y730157D01*
+X389445Y730099D01*
+X389402Y730034D01*
+X389370Y729962D01*
+X389294Y729729D01*
+X389240Y729489D01*
+X389208Y729245D01*
+X389197Y729000D01*
+X389208Y728755D01*
+X389240Y728511D01*
+X389294Y728271D01*
+X389368Y728037D01*
+X389400Y727965D01*
+X389444Y727900D01*
+X389497Y727841D01*
+X389559Y727792D01*
+X389628Y727754D01*
+X389702Y727726D01*
+X389770Y727712D01*
+Y725235D01*
+G37*
+G36*
+X392001Y706400D02*X392000Y706400D01*
+X391842Y706407D01*
+X391686Y706428D01*
+X391532Y706462D01*
+X391382Y706510D01*
+X391306Y706532D01*
+X391228Y706541D01*
+X391150Y706538D01*
+X391073Y706522D01*
+X390999Y706495D01*
+X390930Y706456D01*
+X390869Y706407D01*
+X390815Y706349D01*
+X390772Y706284D01*
+X390739Y706212D01*
+X390718Y706136D01*
+X390709Y706058D01*
+X390712Y705980D01*
+X390728Y705902D01*
+X390755Y705829D01*
+X390794Y705760D01*
+X390843Y705698D01*
+X390901Y705645D01*
+X390966Y705602D01*
+X391038Y705570D01*
+X391166Y705528D01*
+X390843Y705450D01*
+X390370Y705255D01*
+X389934Y704987D01*
+X389770Y704842D01*
+Y706912D01*
+X389779Y706910D01*
+X389858Y706907D01*
+X389937Y706916D01*
+X390013Y706937D01*
+X390085Y706970D01*
+X390150Y707014D01*
+X390209Y707067D01*
+X390258Y707129D01*
+X390296Y707198D01*
+X390324Y707272D01*
+X390340Y707349D01*
+X390343Y707428D01*
+X390334Y707507D01*
+X390311Y707582D01*
+X390262Y707732D01*
+X390228Y707886D01*
+X390207Y708042D01*
+X390200Y708200D01*
+X390207Y708358D01*
+X390228Y708514D01*
+X390262Y708668D01*
+X390310Y708818D01*
+X390332Y708894D01*
+X390341Y708972D01*
+X390338Y709050D01*
+X390322Y709127D01*
+X390295Y709201D01*
+X390256Y709270D01*
+X390207Y709331D01*
+X390149Y709385D01*
+X390084Y709428D01*
+X390012Y709461D01*
+X389936Y709482D01*
+X389858Y709491D01*
+X389780Y709488D01*
+X389770Y709486D01*
+Y711447D01*
+X389802Y711525D01*
+X389866Y711793D01*
+X389888Y712067D01*
+X389866Y712342D01*
+X389802Y712610D01*
+X389770Y712687D01*
+Y718795D01*
+X391491Y720516D01*
+X391800Y720491D01*
+X392001Y720507D01*
+Y711003D01*
+X392000Y711003D01*
+X391755Y710992D01*
+X391511Y710960D01*
+X391271Y710906D01*
+X391037Y710832D01*
+X390965Y710800D01*
+X390900Y710756D01*
+X390841Y710703D01*
+X390792Y710641D01*
+X390754Y710572D01*
+X390726Y710498D01*
+X390710Y710421D01*
+X390707Y710342D01*
+X390716Y710263D01*
+X390737Y710187D01*
+X390770Y710115D01*
+X390814Y710050D01*
+X390867Y709991D01*
+X390929Y709942D01*
+X390998Y709904D01*
+X391072Y709876D01*
+X391149Y709860D01*
+X391228Y709857D01*
+X391307Y709866D01*
+X391382Y709889D01*
+X391532Y709938D01*
+X391686Y709972D01*
+X391842Y709993D01*
+X392000Y710000D01*
+X392001Y710000D01*
+Y706400D01*
+G37*
+G36*
+X389770Y712687D02*X389697Y712864D01*
+X389553Y713099D01*
+X389374Y713309D01*
+X389365Y713317D01*
+X389362Y714783D01*
+X389325Y714936D01*
+X389265Y715082D01*
+X389183Y715216D01*
+X389081Y715336D01*
+X388961Y715438D01*
+X388827Y715520D01*
+X388681Y715580D01*
+X388556Y715610D01*
+X388681Y715640D01*
+X388827Y715700D01*
+X388961Y715783D01*
+X389081Y715885D01*
+X389183Y716005D01*
+X389265Y716139D01*
+X389325Y716284D01*
+X389362Y716437D01*
+X389371Y716594D01*
+X389368Y718393D01*
+X389770Y718795D01*
+Y712687D01*
+G37*
+G36*
+Y704842D02*X389722Y704799D01*
+X389495Y704605D01*
+X389412Y704508D01*
+X388034Y703130D01*
+Y708517D01*
+X388528Y708518D01*
+X388681Y708554D01*
+X388827Y708614D01*
+X388961Y708697D01*
+X389081Y708799D01*
+X389183Y708919D01*
+X389265Y709053D01*
+X389325Y709198D01*
+X389362Y709351D01*
+X389371Y709508D01*
+X389369Y710822D01*
+X389374Y710826D01*
+X389553Y711036D01*
+X389697Y711270D01*
+X389770Y711447D01*
+Y709486D01*
+X389702Y709472D01*
+X389629Y709445D01*
+X389560Y709406D01*
+X389498Y709357D01*
+X389445Y709299D01*
+X389402Y709234D01*
+X389370Y709162D01*
+X389294Y708929D01*
+X389240Y708689D01*
+X389208Y708445D01*
+X389197Y708200D01*
+X389208Y707955D01*
+X389240Y707711D01*
+X389294Y707471D01*
+X389368Y707237D01*
+X389400Y707165D01*
+X389444Y707100D01*
+X389497Y707041D01*
+X389559Y706992D01*
+X389628Y706954D01*
+X389702Y706926D01*
+X389770Y706912D01*
+Y704842D01*
+G37*
+G36*
+X392001Y584000D02*X389670D01*
+Y685912D01*
+X389679Y685910D01*
+X389758Y685907D01*
+X389837Y685916D01*
+X389913Y685937D01*
+X389985Y685970D01*
+X390050Y686014D01*
+X390109Y686067D01*
+X390158Y686129D01*
+X390196Y686198D01*
+X390224Y686272D01*
+X390240Y686349D01*
+X390243Y686428D01*
+X390234Y686507D01*
+X390211Y686582D01*
+X390162Y686732D01*
+X390128Y686886D01*
+X390107Y687042D01*
+X390100Y687200D01*
+X390107Y687358D01*
+X390128Y687514D01*
+X390162Y687668D01*
+X390210Y687818D01*
+X390232Y687894D01*
+X390241Y687972D01*
+X390238Y688050D01*
+X390222Y688127D01*
+X390195Y688201D01*
+X390156Y688270D01*
+X390107Y688331D01*
+X390049Y688385D01*
+X389984Y688428D01*
+X389912Y688461D01*
+X389836Y688482D01*
+X389758Y688491D01*
+X389680Y688488D01*
+X389670Y688486D01*
+Y695609D01*
+X390005Y695895D01*
+X390088Y695992D01*
+X392001Y697905D01*
+Y689998D01*
+X391900Y690003D01*
+X391655Y689992D01*
+X391411Y689960D01*
+X391171Y689906D01*
+X390937Y689832D01*
+X390865Y689800D01*
+X390800Y689756D01*
+X390741Y689703D01*
+X390692Y689641D01*
+X390654Y689572D01*
+X390626Y689498D01*
+X390610Y689421D01*
+X390607Y689342D01*
+X390616Y689263D01*
+X390637Y689187D01*
+X390670Y689115D01*
+X390714Y689050D01*
+X390767Y688991D01*
+X390829Y688942D01*
+X390898Y688904D01*
+X390972Y688876D01*
+X391049Y688860D01*
+X391128Y688857D01*
+X391207Y688866D01*
+X391282Y688889D01*
+X391432Y688938D01*
+X391586Y688972D01*
+X391742Y688993D01*
+X391900Y689000D01*
+X392001Y688996D01*
+Y685404D01*
+X391900Y685400D01*
+X391742Y685407D01*
+X391586Y685428D01*
+X391432Y685462D01*
+X391282Y685510D01*
+X391206Y685532D01*
+X391128Y685541D01*
+X391050Y685538D01*
+X390973Y685522D01*
+X390899Y685495D01*
+X390830Y685456D01*
+X390769Y685407D01*
+X390715Y685349D01*
+X390672Y685284D01*
+X390639Y685212D01*
+X390618Y685136D01*
+X390609Y685058D01*
+X390612Y684980D01*
+X390628Y684902D01*
+X390655Y684829D01*
+X390694Y684760D01*
+X390743Y684698D01*
+X390801Y684645D01*
+X390866Y684602D01*
+X390938Y684570D01*
+X391171Y684494D01*
+X391411Y684440D01*
+X391655Y684408D01*
+X391900Y684397D01*
+X392001Y684402D01*
+Y623054D01*
+X391788Y622924D01*
+X391190Y622413D01*
+X390679Y621814D01*
+X390267Y621143D01*
+X389966Y620416D01*
+X389783Y619651D01*
+X389721Y618866D01*
+X389783Y618082D01*
+X389966Y617316D01*
+X390267Y616589D01*
+X390679Y615918D01*
+X391190Y615320D01*
+X391788Y614809D01*
+X392001Y614678D01*
+Y584000D01*
+G37*
+G36*
+X389670D02*X388034D01*
+Y688105D01*
+X388084Y688187D01*
+X388144Y688332D01*
+X388181Y688485D01*
+X388190Y688642D01*
+X388189Y689471D01*
+X388441Y689532D01*
+X388696Y689637D01*
+X388931Y689781D01*
+X389140Y689960D01*
+X389319Y690169D01*
+X389463Y690404D01*
+X389568Y690659D01*
+X389633Y690927D01*
+X389654Y691201D01*
+X389633Y691476D01*
+X389568Y691744D01*
+X389463Y691998D01*
+X389319Y692233D01*
+X389140Y692442D01*
+X388931Y692621D01*
+X388696Y692765D01*
+X388441Y692871D01*
+X388183Y692933D01*
+X388181Y693917D01*
+X388144Y694070D01*
+X388084Y694215D01*
+X388034Y694298D01*
+Y694966D01*
+X388210Y694980D01*
+X388707Y695100D01*
+X389180Y695295D01*
+X389616Y695563D01*
+X389670Y695609D01*
+Y688486D01*
+X389602Y688472D01*
+X389529Y688445D01*
+X389460Y688406D01*
+X389398Y688357D01*
+X389345Y688299D01*
+X389302Y688234D01*
+X389270Y688162D01*
+X389194Y687929D01*
+X389140Y687689D01*
+X389108Y687445D01*
+X389097Y687200D01*
+X389108Y686955D01*
+X389140Y686711D01*
+X389194Y686471D01*
+X389268Y686237D01*
+X389300Y686165D01*
+X389344Y686100D01*
+X389397Y686041D01*
+X389459Y685992D01*
+X389528Y685954D01*
+X389602Y685926D01*
+X389670Y685912D01*
+Y584000D01*
+G37*
+G36*
+X388034Y694298D02*X388002Y694350D01*
+X387899Y694469D01*
+X387780Y694572D01*
+X387646Y694654D01*
+X387500Y694714D01*
+X387375Y694744D01*
+X387500Y694774D01*
+X387646Y694834D01*
+X387780Y694917D01*
+X387818Y694949D01*
+X388034Y694966D01*
+Y694298D01*
+G37*
+G36*
+Y736424D02*X388002Y736476D01*
+X387899Y736595D01*
+X387780Y736698D01*
+X387646Y736780D01*
+X387500Y736840D01*
+X387375Y736870D01*
+X387500Y736900D01*
+X387646Y736960D01*
+X387780Y737043D01*
+X387899Y737145D01*
+X388002Y737264D01*
+X388034Y737317D01*
+Y736424D01*
+G37*
+G36*
+Y584000D02*X377000D01*
+X369000Y576000D01*
+Y558000D01*
+X368242D01*
+Y754318D01*
+X368375Y754185D01*
+X368722Y754751D01*
+X368993Y755405D01*
+X369158Y756094D01*
+X369200Y756800D01*
+X369158Y757506D01*
+X368993Y758195D01*
+X368722Y758849D01*
+X368375Y759415D01*
+X368242Y759282D01*
+Y764019D01*
+X368352Y764147D01*
+X368722Y764751D01*
+X368993Y765405D01*
+X369158Y766094D01*
+X369200Y766800D01*
+X369158Y767506D01*
+X368993Y768195D01*
+X368722Y768849D01*
+X368352Y769453D01*
+X368242Y769581D01*
+Y772000D01*
+X370000D01*
+X376070Y772007D01*
+X374772Y770898D01*
+X373462Y769364D01*
+X372408Y767645D01*
+X371637Y765782D01*
+X371166Y763821D01*
+X371008Y761811D01*
+X371166Y759801D01*
+X371637Y757840D01*
+X372408Y755977D01*
+X373462Y754258D01*
+X374772Y752724D01*
+X376305Y751415D01*
+X378024Y750361D01*
+X379887Y749589D01*
+X381848Y749119D01*
+X383858Y748960D01*
+X385869Y749119D01*
+X387829Y749589D01*
+X388034Y749674D01*
+Y743510D01*
+X388002Y743562D01*
+X387899Y743681D01*
+X387780Y743784D01*
+X387646Y743866D01*
+X387500Y743926D01*
+X387347Y743963D01*
+X387190Y743972D01*
+X381129Y743963D01*
+X380976Y743926D01*
+X380831Y743866D01*
+X380697Y743784D01*
+X380577Y743681D01*
+X380475Y743562D01*
+X380392Y743427D01*
+X380332Y743282D01*
+X380295Y743129D01*
+X380286Y742972D01*
+X380295Y737697D01*
+X380332Y737544D01*
+X380392Y737399D01*
+X380475Y737264D01*
+X380577Y737145D01*
+X380697Y737043D01*
+X380831Y736960D01*
+X380976Y736900D01*
+X381101Y736870D01*
+X380976Y736840D01*
+X380831Y736780D01*
+X380697Y736698D01*
+X380577Y736595D01*
+X380475Y736476D01*
+X380392Y736341D01*
+X380332Y736196D01*
+X380295Y736043D01*
+X380286Y735886D01*
+X380295Y730611D01*
+X380332Y730458D01*
+X380392Y730313D01*
+X380475Y730178D01*
+X380577Y730059D01*
+X380697Y729957D01*
+X380831Y729874D01*
+X380976Y729814D01*
+X381129Y729777D01*
+X381286Y729768D01*
+X387347Y729777D01*
+X387500Y729814D01*
+X387646Y729874D01*
+X387780Y729957D01*
+X387899Y730059D01*
+X388002Y730178D01*
+X388034Y730231D01*
+Y722712D01*
+X382310Y722703D01*
+X382157Y722666D01*
+X382012Y722606D01*
+X381878Y722524D01*
+X381758Y722422D01*
+X381656Y722302D01*
+X381574Y722168D01*
+X381513Y722022D01*
+X381477Y721869D01*
+X381467Y721712D01*
+X381477Y716437D01*
+X381513Y716284D01*
+X381574Y716139D01*
+X381656Y716005D01*
+X381758Y715885D01*
+X381878Y715783D01*
+X382012Y715700D01*
+X382157Y715640D01*
+X382282Y715610D01*
+X382157Y715580D01*
+X382012Y715520D01*
+X381878Y715438D01*
+X381758Y715336D01*
+X381656Y715216D01*
+X381574Y715082D01*
+X381513Y714936D01*
+X381477Y714783D01*
+X381467Y714626D01*
+X381477Y709351D01*
+X381513Y709198D01*
+X381574Y709053D01*
+X381656Y708919D01*
+X381758Y708799D01*
+X381878Y708697D01*
+X382012Y708614D01*
+X382157Y708554D01*
+X382310Y708518D01*
+X382467Y708508D01*
+X388034Y708517D01*
+Y703130D01*
+X386749Y701845D01*
+X381129Y701837D01*
+X380976Y701800D01*
+X380831Y701740D01*
+X380697Y701658D01*
+X380577Y701555D01*
+X380475Y701436D01*
+X380392Y701301D01*
+X380332Y701156D01*
+X380295Y701003D01*
+X380286Y700846D01*
+X380295Y695571D01*
+X380332Y695418D01*
+X380392Y695273D01*
+X380475Y695138D01*
+X380577Y695019D01*
+X380697Y694917D01*
+X380831Y694834D01*
+X380976Y694774D01*
+X381101Y694744D01*
+X380976Y694714D01*
+X380831Y694654D01*
+X380697Y694572D01*
+X380577Y694469D01*
+X380475Y694350D01*
+X380392Y694215D01*
+X380332Y694070D01*
+X380295Y693917D01*
+X380286Y693760D01*
+X380295Y688485D01*
+X380332Y688332D01*
+X380392Y688187D01*
+X380475Y688052D01*
+X380577Y687933D01*
+X380697Y687831D01*
+X380831Y687748D01*
+X380976Y687688D01*
+X381129Y687651D01*
+X381286Y687642D01*
+X387347Y687651D01*
+X387500Y687688D01*
+X387646Y687748D01*
+X387780Y687831D01*
+X387899Y687933D01*
+X388002Y688052D01*
+X388034Y688105D01*
+Y584000D01*
+G37*
+G36*
+X368242Y769581D02*X367892Y769992D01*
+X367353Y770452D01*
+X366749Y770822D01*
+X366095Y771093D01*
+X365406Y771258D01*
+X364700Y771314D01*
+Y772000D01*
+X368242D01*
+Y769581D01*
+G37*
+G36*
+Y558000D02*X364700D01*
+Y752286D01*
+X365406Y752342D01*
+X366095Y752507D01*
+X366749Y752778D01*
+X367315Y753125D01*
+X366224Y754215D01*
+X366066Y754119D01*
+X365630Y753938D01*
+X365171Y753828D01*
+X364700Y753791D01*
+Y759809D01*
+X365171Y759772D01*
+X365630Y759662D01*
+X366066Y759481D01*
+X366224Y759385D01*
+X367315Y760475D01*
+X366749Y760822D01*
+X366095Y761093D01*
+X365406Y761258D01*
+X364700Y761314D01*
+Y762286D01*
+X365406Y762342D01*
+X366095Y762507D01*
+X366749Y762778D01*
+X367353Y763148D01*
+X367892Y763608D01*
+X368242Y764019D01*
+Y759282D01*
+X367285Y758324D01*
+X367381Y758166D01*
+X367562Y757730D01*
+X367672Y757271D01*
+X367700Y756800D01*
+X367672Y756329D01*
+X367562Y755870D01*
+X367381Y755434D01*
+X367285Y755276D01*
+X368242Y754318D01*
+Y558000D01*
+G37*
+G36*
+X364700Y771314D02*X363994Y771258D01*
+X363305Y771093D01*
+X362651Y770822D01*
+X362047Y770452D01*
+X361508Y769992D01*
+X361151Y769573D01*
+Y772000D01*
+X364700D01*
+Y771314D01*
+G37*
+G36*
+Y558000D02*X361151D01*
+Y739083D01*
+X361171Y739132D01*
+X361274Y739561D01*
+X361300Y740000D01*
+X361274Y740439D01*
+X361171Y740868D01*
+X361151Y740917D01*
+Y754311D01*
+X362115Y755276D01*
+X362019Y755434D01*
+X361838Y755870D01*
+X361728Y756329D01*
+X361691Y756800D01*
+X361728Y757271D01*
+X361838Y757730D01*
+X362019Y758166D01*
+X362115Y758324D01*
+X361151Y759289D01*
+Y764027D01*
+X361508Y763608D01*
+X362047Y763148D01*
+X362651Y762778D01*
+X363305Y762507D01*
+X363994Y762342D01*
+X364700Y762286D01*
+Y761314D01*
+X363994Y761258D01*
+X363305Y761093D01*
+X362651Y760822D01*
+X362085Y760475D01*
+X363176Y759385D01*
+X363334Y759481D01*
+X363770Y759662D01*
+X364229Y759772D01*
+X364700Y759809D01*
+Y753791D01*
+X364229Y753828D01*
+X363770Y753938D01*
+X363334Y754119D01*
+X363176Y754215D01*
+X362085Y753125D01*
+X362651Y752778D01*
+X363305Y752507D01*
+X363994Y752342D01*
+X364700Y752286D01*
+Y558000D01*
+G37*
+G36*
+X361151Y740917D02*X361003Y741275D01*
+X360772Y741651D01*
+X360486Y741986D01*
+X360151Y742272D01*
+X359775Y742503D01*
+X359368Y742671D01*
+X358939Y742774D01*
+X358500Y742809D01*
+X358191Y742784D01*
+X356786Y744189D01*
+X356741Y744241D01*
+X356532Y744420D01*
+X356297Y744564D01*
+X356042Y744669D01*
+X355775Y744734D01*
+X355774Y744734D01*
+X355500Y744755D01*
+X355431Y744750D01*
+X354693D01*
+Y752287D01*
+X354700Y752286D01*
+X355406Y752342D01*
+X356095Y752507D01*
+X356749Y752778D01*
+X357353Y753148D01*
+X357892Y753608D01*
+X358352Y754147D01*
+X358722Y754751D01*
+X358993Y755405D01*
+X359158Y756094D01*
+X359200Y756800D01*
+X359158Y757506D01*
+X358993Y758195D01*
+X358722Y758849D01*
+X358352Y759453D01*
+X357892Y759992D01*
+X357353Y760452D01*
+X356749Y760822D01*
+X356095Y761093D01*
+X355406Y761258D01*
+X354700Y761314D01*
+X354693Y761313D01*
+Y762287D01*
+X354700Y762286D01*
+X355406Y762342D01*
+X356095Y762507D01*
+X356749Y762778D01*
+X357353Y763148D01*
+X357892Y763608D01*
+X358352Y764147D01*
+X358722Y764751D01*
+X358993Y765405D01*
+X359158Y766094D01*
+X359200Y766800D01*
+X359158Y767506D01*
+X358993Y768195D01*
+X358722Y768849D01*
+X358352Y769453D01*
+X357892Y769992D01*
+X357353Y770452D01*
+X356749Y770822D01*
+X356095Y771093D01*
+X355406Y771258D01*
+X354700Y771314D01*
+X354693Y771313D01*
+Y772000D01*
+X361151D01*
+Y769573D01*
+X361048Y769453D01*
+X360678Y768849D01*
+X360407Y768195D01*
+X360242Y767506D01*
+X360186Y766800D01*
+X360242Y766094D01*
+X360407Y765405D01*
+X360678Y764751D01*
+X361048Y764147D01*
+X361151Y764027D01*
+Y759289D01*
+X361025Y759415D01*
+X360678Y758849D01*
+X360407Y758195D01*
+X360242Y757506D01*
+X360186Y756800D01*
+X360242Y756094D01*
+X360407Y755405D01*
+X360678Y754751D01*
+X361025Y754185D01*
+X361151Y754311D01*
+Y740917D01*
+G37*
+G36*
+Y558000D02*X354693D01*
+Y741250D01*
+X354775D01*
+X355716Y740309D01*
+X355691Y740000D01*
+X355726Y739561D01*
+X355829Y739132D01*
+X355997Y738725D01*
+X356228Y738349D01*
+X356514Y738014D01*
+X356849Y737728D01*
+X357225Y737497D01*
+X357632Y737329D01*
+X358061Y737226D01*
+X358500Y737191D01*
+X358939Y737226D01*
+X359368Y737329D01*
+X359775Y737497D01*
+X360151Y737728D01*
+X360486Y738014D01*
+X360772Y738349D01*
+X361003Y738725D01*
+X361151Y739083D01*
+Y558000D01*
+G37*
+G36*
+X354693Y744750D02*X351552D01*
+X351550Y746109D01*
+X351513Y746262D01*
+X351453Y746407D01*
+X351371Y746542D01*
+X351268Y746661D01*
+X351149Y746764D01*
+X351014Y746846D01*
+X350869Y746906D01*
+X350716Y746943D01*
+X350559Y746952D01*
+X345743Y746944D01*
+Y752423D01*
+X346095Y752507D01*
+X346749Y752778D01*
+X347353Y753148D01*
+X347892Y753608D01*
+X348352Y754147D01*
+X348722Y754751D01*
+X348993Y755405D01*
+X349158Y756094D01*
+X349200Y756800D01*
+X349158Y757506D01*
+X348993Y758195D01*
+X348722Y758849D01*
+X348352Y759453D01*
+X347892Y759992D01*
+X347353Y760452D01*
+X346749Y760822D01*
+X346095Y761093D01*
+X345743Y761177D01*
+Y762423D01*
+X346095Y762507D01*
+X346749Y762778D01*
+X347353Y763148D01*
+X347892Y763608D01*
+X348352Y764147D01*
+X348722Y764751D01*
+X348993Y765405D01*
+X349158Y766094D01*
+X349200Y766800D01*
+X349158Y767506D01*
+X348993Y768195D01*
+X348722Y768849D01*
+X348352Y769453D01*
+X347892Y769992D01*
+X347353Y770452D01*
+X346749Y770822D01*
+X346095Y771093D01*
+X345743Y771177D01*
+Y772000D01*
+X354693D01*
+Y771313D01*
+X353994Y771258D01*
+X353305Y771093D01*
+X352651Y770822D01*
+X352047Y770452D01*
+X351508Y769992D01*
+X351048Y769453D01*
+X350678Y768849D01*
+X350407Y768195D01*
+X350242Y767506D01*
+X350186Y766800D01*
+X350242Y766094D01*
+X350407Y765405D01*
+X350678Y764751D01*
+X351048Y764147D01*
+X351508Y763608D01*
+X352047Y763148D01*
+X352651Y762778D01*
+X353305Y762507D01*
+X353994Y762342D01*
+X354693Y762287D01*
+Y761313D01*
+X353994Y761258D01*
+X353305Y761093D01*
+X352651Y760822D01*
+X352047Y760452D01*
+X351508Y759992D01*
+X351048Y759453D01*
+X350678Y758849D01*
+X350407Y758195D01*
+X350242Y757506D01*
+X350186Y756800D01*
+X350242Y756094D01*
+X350407Y755405D01*
+X350678Y754751D01*
+X351048Y754147D01*
+X351508Y753608D01*
+X352047Y753148D01*
+X352651Y752778D01*
+X353305Y752507D01*
+X353994Y752342D01*
+X354693Y752287D01*
+Y744750D01*
+G37*
+G36*
+Y558000D02*X345743D01*
+Y739049D01*
+X350716Y739057D01*
+X350869Y739094D01*
+X351014Y739154D01*
+X351149Y739236D01*
+X351268Y739339D01*
+X351371Y739458D01*
+X351453Y739593D01*
+X351513Y739738D01*
+X351550Y739891D01*
+X351559Y740048D01*
+X351557Y741250D01*
+X354693D01*
+Y558000D01*
+G37*
+G36*
+X338242Y772000D02*X345743D01*
+Y771177D01*
+X345406Y771258D01*
+X344700Y771314D01*
+X343994Y771258D01*
+X343305Y771093D01*
+X342651Y770822D01*
+X342047Y770452D01*
+X341508Y769992D01*
+X341048Y769453D01*
+X340678Y768849D01*
+X340407Y768195D01*
+X340242Y767506D01*
+X340186Y766800D01*
+X340242Y766094D01*
+X340407Y765405D01*
+X340678Y764751D01*
+X341048Y764147D01*
+X341508Y763608D01*
+X342047Y763148D01*
+X342651Y762778D01*
+X343305Y762507D01*
+X343994Y762342D01*
+X344700Y762286D01*
+X345406Y762342D01*
+X345743Y762423D01*
+Y761177D01*
+X345406Y761258D01*
+X344700Y761314D01*
+X343994Y761258D01*
+X343305Y761093D01*
+X342651Y760822D01*
+X342047Y760452D01*
+X341508Y759992D01*
+X341048Y759453D01*
+X340678Y758849D01*
+X340407Y758195D01*
+X340242Y757506D01*
+X340186Y756800D01*
+X340242Y756094D01*
+X340407Y755405D01*
+X340678Y754751D01*
+X341048Y754147D01*
+X341508Y753608D01*
+X342047Y753148D01*
+X342651Y752778D01*
+X343305Y752507D01*
+X343994Y752342D01*
+X344700Y752286D01*
+X345406Y752342D01*
+X345743Y752423D01*
+Y746944D01*
+X345284Y746943D01*
+X345131Y746906D01*
+X344986Y746846D01*
+X344851Y746764D01*
+X344732Y746661D01*
+X344630Y746542D01*
+X344547Y746407D01*
+X344487Y746262D01*
+X344457Y746137D01*
+X344427Y746262D01*
+X344367Y746407D01*
+X344285Y746542D01*
+X344182Y746661D01*
+X344063Y746764D01*
+X343928Y746846D01*
+X343783Y746906D01*
+X343630Y746943D01*
+X343473Y746952D01*
+X338242Y746943D01*
+Y754019D01*
+X338352Y754147D01*
+X338722Y754751D01*
+X338993Y755405D01*
+X339158Y756094D01*
+X339200Y756800D01*
+X339158Y757506D01*
+X338993Y758195D01*
+X338722Y758849D01*
+X338352Y759453D01*
+X338242Y759581D01*
+Y764318D01*
+X338375Y764185D01*
+X338722Y764751D01*
+X338993Y765405D01*
+X339158Y766094D01*
+X339200Y766800D01*
+X339158Y767506D01*
+X338993Y768195D01*
+X338722Y768849D01*
+X338375Y769415D01*
+X338242Y769282D01*
+Y772000D01*
+G37*
+G36*
+Y746943D02*X338198Y746943D01*
+X338045Y746906D01*
+X337900Y746846D01*
+X337765Y746764D01*
+X337646Y746661D01*
+X337544Y746542D01*
+X337461Y746407D01*
+X337401Y746262D01*
+X337364Y746109D01*
+X337355Y745952D01*
+X337357Y744750D01*
+X336250D01*
+Y752571D01*
+X336749Y752778D01*
+X337353Y753148D01*
+X337892Y753608D01*
+X338242Y754019D01*
+Y746943D01*
+G37*
+G36*
+X334700Y772000D02*X338242D01*
+Y769282D01*
+X337285Y768324D01*
+X337381Y768166D01*
+X337562Y767730D01*
+X337672Y767271D01*
+X337700Y766800D01*
+X337672Y766329D01*
+X337562Y765870D01*
+X337381Y765434D01*
+X337285Y765276D01*
+X338242Y764318D01*
+Y759581D01*
+X337892Y759992D01*
+X337353Y760452D01*
+X336749Y760822D01*
+X336095Y761093D01*
+X335406Y761258D01*
+X334700Y761314D01*
+Y762286D01*
+X335406Y762342D01*
+X336095Y762507D01*
+X336749Y762778D01*
+X337315Y763125D01*
+X336224Y764215D01*
+X336066Y764119D01*
+X335630Y763938D01*
+X335171Y763828D01*
+X334700Y763791D01*
+Y769809D01*
+X335171Y769772D01*
+X335630Y769662D01*
+X336066Y769481D01*
+X336224Y769385D01*
+X337315Y770475D01*
+X336749Y770822D01*
+X336095Y771093D01*
+X335406Y771258D01*
+X334700Y771314D01*
+Y772000D01*
+G37*
+G36*
+X331151D02*X334700D01*
+Y771314D01*
+X333994Y771258D01*
+X333305Y771093D01*
+X332651Y770822D01*
+X332085Y770475D01*
+X333176Y769385D01*
+X333334Y769481D01*
+X333770Y769662D01*
+X334229Y769772D01*
+X334700Y769809D01*
+Y763791D01*
+X334229Y763828D01*
+X333770Y763938D01*
+X333334Y764119D01*
+X333176Y764215D01*
+X332085Y763125D01*
+X332651Y762778D01*
+X333305Y762507D01*
+X333994Y762342D01*
+X334700Y762286D01*
+Y761314D01*
+X333994Y761258D01*
+X333305Y761093D01*
+X332651Y760822D01*
+X332047Y760452D01*
+X331508Y759992D01*
+X331151Y759573D01*
+Y764311D01*
+X332115Y765276D01*
+X332019Y765434D01*
+X331838Y765870D01*
+X331728Y766329D01*
+X331691Y766800D01*
+X331728Y767271D01*
+X331838Y767730D01*
+X332019Y768166D01*
+X332115Y768324D01*
+X331151Y769289D01*
+Y772000D01*
+G37*
+G36*
+X345743Y558000D02*X331151D01*
+Y595728D01*
+X331151Y595728D01*
+X331486Y596014D01*
+X331772Y596349D01*
+X332003Y596725D01*
+X332171Y597132D01*
+X332274Y597561D01*
+X332300Y598000D01*
+X332274Y598439D01*
+X332171Y598868D01*
+X332003Y599275D01*
+X331772Y599651D01*
+X331486Y599986D01*
+X331151Y600272D01*
+X331151Y600272D01*
+Y754027D01*
+X331508Y753608D01*
+X332047Y753148D01*
+X332651Y752778D01*
+X332750Y752737D01*
+Y743069D01*
+X332745Y743000D01*
+X332766Y742725D01*
+X332831Y742458D01*
+X332936Y742203D01*
+X333080Y741968D01*
+X333259Y741759D01*
+X333468Y741580D01*
+X333703Y741436D01*
+X333958Y741331D01*
+X334225Y741266D01*
+X334500Y741245D01*
+X334569Y741250D01*
+X337362D01*
+X337364Y739891D01*
+X337401Y739738D01*
+X337461Y739593D01*
+X337544Y739458D01*
+X337646Y739339D01*
+X337765Y739236D01*
+X337900Y739154D01*
+X338045Y739094D01*
+X338198Y739057D01*
+X338355Y739048D01*
+X343630Y739057D01*
+X343783Y739094D01*
+X343928Y739154D01*
+X344063Y739236D01*
+X344182Y739339D01*
+X344285Y739458D01*
+X344367Y739593D01*
+X344427Y739738D01*
+X344457Y739863D01*
+X344487Y739738D01*
+X344547Y739593D01*
+X344630Y739458D01*
+X344732Y739339D01*
+X344851Y739236D01*
+X344986Y739154D01*
+X345131Y739094D01*
+X345284Y739057D01*
+X345441Y739048D01*
+X345743Y739049D01*
+Y558000D01*
+G37*
+G36*
+X331151Y600272D02*X330775Y600503D01*
+X330368Y600671D01*
+X329939Y600774D01*
+X329882Y600779D01*
+X329827Y600826D01*
+X329827Y600826D01*
+X329712Y600896D01*
+X329525Y601011D01*
+X329293Y601107D01*
+X329197Y601146D01*
+X328853Y601229D01*
+X328500Y601257D01*
+X328412Y601250D01*
+X325996D01*
+Y752483D01*
+X326095Y752507D01*
+X326749Y752778D01*
+X327353Y753148D01*
+X327892Y753608D01*
+X328352Y754147D01*
+X328722Y754751D01*
+X328993Y755405D01*
+X329158Y756094D01*
+X329200Y756800D01*
+X329158Y757506D01*
+X328993Y758195D01*
+X328722Y758849D01*
+X328352Y759453D01*
+X327892Y759992D01*
+X327353Y760452D01*
+X326749Y760822D01*
+X326095Y761093D01*
+X325996Y761117D01*
+Y762483D01*
+X326095Y762507D01*
+X326749Y762778D01*
+X327353Y763148D01*
+X327892Y763608D01*
+X328352Y764147D01*
+X328722Y764751D01*
+X328993Y765405D01*
+X329158Y766094D01*
+X329200Y766800D01*
+X329158Y767506D01*
+X328993Y768195D01*
+X328722Y768849D01*
+X328352Y769453D01*
+X327892Y769992D01*
+X327353Y770452D01*
+X326749Y770822D01*
+X326095Y771093D01*
+X325996Y771117D01*
+Y772000D01*
+X331151D01*
+Y769289D01*
+X331025Y769415D01*
+X330678Y768849D01*
+X330407Y768195D01*
+X330242Y767506D01*
+X330186Y766800D01*
+X330242Y766094D01*
+X330407Y765405D01*
+X330678Y764751D01*
+X331025Y764185D01*
+X331151Y764311D01*
+Y759573D01*
+X331048Y759453D01*
+X330678Y758849D01*
+X330407Y758195D01*
+X330242Y757506D01*
+X330186Y756800D01*
+X330242Y756094D01*
+X330407Y755405D01*
+X330678Y754751D01*
+X331048Y754147D01*
+X331151Y754027D01*
+Y600272D01*
+G37*
+G36*
+Y558000D02*X325996D01*
+Y596750D01*
+X326987D01*
+X326997Y596725D01*
+X327228Y596349D01*
+X327514Y596014D01*
+X327849Y595728D01*
+X328225Y595497D01*
+X328632Y595329D01*
+X329061Y595226D01*
+X329500Y595191D01*
+X329939Y595226D01*
+X330368Y595329D01*
+X330775Y595497D01*
+X331151Y595728D01*
+Y558000D01*
+G37*
+G36*
+X325996D02*X312884D01*
+Y732269D01*
+X312887Y732270D01*
+X312955Y732309D01*
+X313016Y732358D01*
+X313069Y732417D01*
+X313111Y732483D01*
+X313274Y732808D01*
+X313403Y733148D01*
+X313501Y733498D01*
+X313567Y733856D01*
+X313600Y734218D01*
+Y734582D01*
+X313567Y734944D01*
+X313501Y735302D01*
+X313403Y735652D01*
+X313274Y735992D01*
+X313115Y736319D01*
+X313072Y736385D01*
+X313019Y736444D01*
+X312957Y736494D01*
+X312888Y736533D01*
+X312884Y736535D01*
+Y752682D01*
+X313305Y752507D01*
+X313994Y752342D01*
+X314700Y752286D01*
+X315406Y752342D01*
+X316095Y752507D01*
+X316749Y752778D01*
+X317353Y753148D01*
+X317892Y753608D01*
+X318352Y754147D01*
+X318722Y754751D01*
+X318993Y755405D01*
+X319158Y756094D01*
+X319200Y756800D01*
+X319158Y757506D01*
+X318993Y758195D01*
+X318722Y758849D01*
+X318352Y759453D01*
+X317892Y759992D01*
+X317353Y760452D01*
+X316749Y760822D01*
+X316095Y761093D01*
+X315406Y761258D01*
+X314700Y761314D01*
+X313994Y761258D01*
+X313305Y761093D01*
+X312884Y760918D01*
+Y762682D01*
+X313305Y762507D01*
+X313994Y762342D01*
+X314700Y762286D01*
+X315406Y762342D01*
+X316095Y762507D01*
+X316749Y762778D01*
+X317353Y763148D01*
+X317892Y763608D01*
+X318352Y764147D01*
+X318722Y764751D01*
+X318993Y765405D01*
+X319158Y766094D01*
+X319200Y766800D01*
+X319158Y767506D01*
+X318993Y768195D01*
+X318722Y768849D01*
+X318352Y769453D01*
+X317892Y769992D01*
+X317353Y770452D01*
+X316749Y770822D01*
+X316095Y771093D01*
+X315406Y771258D01*
+X314700Y771314D01*
+X313994Y771258D01*
+X313305Y771093D01*
+X312884Y770918D01*
+Y772000D01*
+X325996D01*
+Y771117D01*
+X325406Y771258D01*
+X324700Y771314D01*
+X323994Y771258D01*
+X323305Y771093D01*
+X322651Y770822D01*
+X322047Y770452D01*
+X321508Y769992D01*
+X321048Y769453D01*
+X320678Y768849D01*
+X320407Y768195D01*
+X320242Y767506D01*
+X320186Y766800D01*
+X320242Y766094D01*
+X320407Y765405D01*
+X320678Y764751D01*
+X321048Y764147D01*
+X321508Y763608D01*
+X322047Y763148D01*
+X322651Y762778D01*
+X323305Y762507D01*
+X323994Y762342D01*
+X324700Y762286D01*
+X325406Y762342D01*
+X325996Y762483D01*
+Y761117D01*
+X325406Y761258D01*
+X324700Y761314D01*
+X323994Y761258D01*
+X323305Y761093D01*
+X322651Y760822D01*
+X322047Y760452D01*
+X321508Y759992D01*
+X321048Y759453D01*
+X320678Y758849D01*
+X320407Y758195D01*
+X320242Y757506D01*
+X320186Y756800D01*
+X320242Y756094D01*
+X320407Y755405D01*
+X320678Y754751D01*
+X321048Y754147D01*
+X321508Y753608D01*
+X322047Y753148D01*
+X322651Y752778D01*
+X323305Y752507D01*
+X323994Y752342D01*
+X324700Y752286D01*
+X325406Y752342D01*
+X325996Y752483D01*
+Y601250D01*
+X324177D01*
+X324151Y601272D01*
+X323775Y601503D01*
+X323368Y601671D01*
+X322939Y601774D01*
+X322500Y601809D01*
+X322061Y601774D01*
+X321632Y601671D01*
+X321225Y601503D01*
+X320849Y601272D01*
+X320514Y600986D01*
+X320228Y600651D01*
+X319997Y600275D01*
+X319829Y599868D01*
+X319726Y599439D01*
+X319691Y599000D01*
+X319726Y598561D01*
+X319829Y598132D01*
+X319997Y597725D01*
+X320228Y597349D01*
+X320514Y597014D01*
+X320849Y596728D01*
+X321225Y596497D01*
+X321632Y596329D01*
+X322061Y596226D01*
+X322500Y596191D01*
+X322939Y596226D01*
+X323368Y596329D01*
+X323775Y596497D01*
+X324151Y596728D01*
+X324177Y596750D01*
+X325996D01*
+Y558000D01*
+G37*
+G36*
+X312884D02*X309602D01*
+Y730400D01*
+X309782D01*
+X310144Y730433D01*
+X310502Y730499D01*
+X310852Y730597D01*
+X311192Y730726D01*
+X311519Y730885D01*
+X311585Y730928D01*
+X311644Y730981D01*
+X311694Y731043D01*
+X311733Y731112D01*
+X311761Y731186D01*
+X311777Y731263D01*
+X311781Y731342D01*
+X311773Y731421D01*
+X311752Y731497D01*
+X311720Y731570D01*
+X311677Y731636D01*
+X311624Y731695D01*
+X311562Y731744D01*
+X311493Y731784D01*
+X311419Y731812D01*
+X311342Y731828D01*
+X311263Y731832D01*
+X311184Y731824D01*
+X311107Y731803D01*
+X311036Y731770D01*
+X310793Y731647D01*
+X310538Y731550D01*
+X310276Y731477D01*
+X310008Y731428D01*
+X309736Y731403D01*
+X309602D01*
+Y737397D01*
+X309736D01*
+X310008Y737372D01*
+X310276Y737323D01*
+X310538Y737250D01*
+X310793Y737153D01*
+X311037Y737033D01*
+X311109Y737000D01*
+X311184Y736979D01*
+X311263Y736971D01*
+X311341Y736975D01*
+X311418Y736991D01*
+X311492Y737019D01*
+X311560Y737058D01*
+X311621Y737107D01*
+X311674Y737166D01*
+X311717Y737232D01*
+X311749Y737304D01*
+X311770Y737380D01*
+X311778Y737458D01*
+X311774Y737536D01*
+X311758Y737613D01*
+X311730Y737687D01*
+X311691Y737755D01*
+X311642Y737816D01*
+X311583Y737869D01*
+X311517Y737911D01*
+X311192Y738074D01*
+X310852Y738203D01*
+X310502Y738301D01*
+X310144Y738367D01*
+X309782Y738400D01*
+X309602D01*
+Y745807D01*
+X309800Y745791D01*
+X310239Y745826D01*
+X310668Y745929D01*
+X311075Y746097D01*
+X311451Y746328D01*
+X311786Y746614D01*
+X312072Y746949D01*
+X312303Y747325D01*
+X312471Y747732D01*
+X312574Y748161D01*
+X312600Y748600D01*
+X312574Y749039D01*
+X312471Y749468D01*
+X312303Y749875D01*
+X312072Y750251D01*
+X311786Y750586D01*
+X311451Y750872D01*
+X311075Y751103D01*
+X310668Y751271D01*
+X310239Y751374D01*
+X309800Y751409D01*
+X309602Y751393D01*
+Y772000D01*
+X312884D01*
+Y770918D01*
+X312651Y770822D01*
+X312047Y770452D01*
+X311508Y769992D01*
+X311048Y769453D01*
+X310678Y768849D01*
+X310407Y768195D01*
+X310242Y767506D01*
+X310186Y766800D01*
+X310242Y766094D01*
+X310407Y765405D01*
+X310678Y764751D01*
+X311048Y764147D01*
+X311508Y763608D01*
+X312047Y763148D01*
+X312651Y762778D01*
+X312884Y762682D01*
+Y760918D01*
+X312651Y760822D01*
+X312047Y760452D01*
+X311508Y759992D01*
+X311048Y759453D01*
+X310678Y758849D01*
+X310407Y758195D01*
+X310242Y757506D01*
+X310186Y756800D01*
+X310242Y756094D01*
+X310407Y755405D01*
+X310678Y754751D01*
+X311048Y754147D01*
+X311508Y753608D01*
+X312047Y753148D01*
+X312651Y752778D01*
+X312884Y752682D01*
+Y736535D01*
+X312814Y736561D01*
+X312737Y736577D01*
+X312658Y736581D01*
+X312579Y736573D01*
+X312503Y736552D01*
+X312430Y736520D01*
+X312364Y736477D01*
+X312305Y736424D01*
+X312256Y736362D01*
+X312216Y736293D01*
+X312188Y736219D01*
+X312172Y736142D01*
+X312168Y736063D01*
+X312176Y735984D01*
+X312197Y735907D01*
+X312230Y735836D01*
+X312353Y735593D01*
+X312450Y735338D01*
+X312523Y735076D01*
+X312572Y734808D01*
+X312597Y734536D01*
+Y734264D01*
+X312572Y733992D01*
+X312523Y733724D01*
+X312450Y733462D01*
+X312353Y733207D01*
+X312233Y732963D01*
+X312200Y732891D01*
+X312179Y732816D01*
+X312171Y732737D01*
+X312175Y732659D01*
+X312191Y732582D01*
+X312219Y732508D01*
+X312258Y732440D01*
+X312307Y732379D01*
+X312366Y732326D01*
+X312432Y732283D01*
+X312504Y732251D01*
+X312580Y732230D01*
+X312658Y732222D01*
+X312736Y732226D01*
+X312813Y732242D01*
+X312884Y732269D01*
+Y558000D01*
+G37*
+G36*
+X309602Y751393D02*X309361Y751374D01*
+X308932Y751271D01*
+X308525Y751103D01*
+X308149Y750872D01*
+X307814Y750586D01*
+X307612Y750350D01*
+X304693D01*
+Y752287D01*
+X304700Y752286D01*
+X305406Y752342D01*
+X306095Y752507D01*
+X306749Y752778D01*
+X307353Y753148D01*
+X307892Y753608D01*
+X308352Y754147D01*
+X308722Y754751D01*
+X308993Y755405D01*
+X309158Y756094D01*
+X309200Y756800D01*
+X309158Y757506D01*
+X308993Y758195D01*
+X308722Y758849D01*
+X308352Y759453D01*
+X307892Y759992D01*
+X307353Y760452D01*
+X306749Y760822D01*
+X306095Y761093D01*
+X305406Y761258D01*
+X304700Y761314D01*
+X304693Y761313D01*
+Y762287D01*
+X304700Y762286D01*
+X305406Y762342D01*
+X306095Y762507D01*
+X306749Y762778D01*
+X307353Y763148D01*
+X307892Y763608D01*
+X308352Y764147D01*
+X308722Y764751D01*
+X308993Y765405D01*
+X309158Y766094D01*
+X309200Y766800D01*
+X309158Y767506D01*
+X308993Y768195D01*
+X308722Y768849D01*
+X308352Y769453D01*
+X307892Y769992D01*
+X307353Y770452D01*
+X306749Y770822D01*
+X306095Y771093D01*
+X305406Y771258D01*
+X304700Y771314D01*
+X304693Y771313D01*
+Y772000D01*
+X309602D01*
+Y751393D01*
+G37*
+G36*
+X304693Y750350D02*X297604D01*
+Y763362D01*
+X297892Y763608D01*
+X298352Y764147D01*
+X298722Y764751D01*
+X298993Y765405D01*
+X299158Y766094D01*
+X299200Y766800D01*
+X299158Y767506D01*
+X298993Y768195D01*
+X298722Y768849D01*
+X298352Y769453D01*
+X297892Y769992D01*
+X297604Y770238D01*
+Y772000D01*
+X304693D01*
+Y771313D01*
+X303994Y771258D01*
+X303305Y771093D01*
+X302651Y770822D01*
+X302047Y770452D01*
+X301508Y769992D01*
+X301048Y769453D01*
+X300678Y768849D01*
+X300407Y768195D01*
+X300242Y767506D01*
+X300186Y766800D01*
+X300242Y766094D01*
+X300407Y765405D01*
+X300678Y764751D01*
+X301048Y764147D01*
+X301508Y763608D01*
+X302047Y763148D01*
+X302651Y762778D01*
+X303305Y762507D01*
+X303994Y762342D01*
+X304693Y762287D01*
+Y761313D01*
+X303994Y761258D01*
+X303305Y761093D01*
+X302651Y760822D01*
+X302047Y760452D01*
+X301508Y759992D01*
+X301048Y759453D01*
+X300678Y758849D01*
+X300407Y758195D01*
+X300242Y757506D01*
+X300186Y756800D01*
+X300242Y756094D01*
+X300407Y755405D01*
+X300678Y754751D01*
+X301048Y754147D01*
+X301508Y753608D01*
+X302047Y753148D01*
+X302651Y752778D01*
+X303305Y752507D01*
+X303994Y752342D01*
+X304693Y752287D01*
+Y750350D01*
+G37*
+G36*
+X308284Y737091D02*X308407Y737153D01*
+X308662Y737250D01*
+X308924Y737323D01*
+X309192Y737372D01*
+X309464Y737397D01*
+X309602D01*
+Y731403D01*
+X309464D01*
+X309192Y731428D01*
+X308924Y731477D01*
+X308662Y731550D01*
+X308407Y731647D01*
+X308284Y731708D01*
+Y737091D01*
+G37*
+G36*
+Y746245D02*X308525Y746097D01*
+X308932Y745929D01*
+X309361Y745826D01*
+X309602Y745807D01*
+Y738400D01*
+X309418D01*
+X309056Y738367D01*
+X308698Y738301D01*
+X308348Y738203D01*
+X308284Y738179D01*
+Y746245D01*
+G37*
+G36*
+X309602Y558000D02*X308284D01*
+Y612387D01*
+X308379Y612467D01*
+X308481Y612587D01*
+X308563Y612721D01*
+X308623Y612867D01*
+X308660Y613020D01*
+X308669Y613177D01*
+X308660Y636834D01*
+X308623Y636987D01*
+X308563Y637132D01*
+X308481Y637266D01*
+X308379Y637386D01*
+X308284Y637467D01*
+Y643774D01*
+X308313Y643821D01*
+X308373Y643967D01*
+X308410Y644120D01*
+X308419Y644277D01*
+X308410Y651934D01*
+X308373Y652087D01*
+X308313Y652232D01*
+X308284Y652280D01*
+Y665117D01*
+X308337Y665163D01*
+X308746Y665642D01*
+X309075Y666178D01*
+X309316Y666760D01*
+X309463Y667372D01*
+X309500Y668000D01*
+X309463Y668628D01*
+X309316Y669240D01*
+X309075Y669822D01*
+X308746Y670358D01*
+X308337Y670837D01*
+X308284Y670883D01*
+Y726269D01*
+X308287Y726270D01*
+X308355Y726309D01*
+X308416Y726358D01*
+X308469Y726417D01*
+X308511Y726483D01*
+X308674Y726808D01*
+X308803Y727148D01*
+X308901Y727498D01*
+X308967Y727856D01*
+X309000Y728218D01*
+Y728582D01*
+X308967Y728944D01*
+X308901Y729302D01*
+X308803Y729652D01*
+X308674Y729992D01*
+X308515Y730319D01*
+X308472Y730385D01*
+X308419Y730444D01*
+X308357Y730494D01*
+X308288Y730533D01*
+X308284Y730535D01*
+Y730621D01*
+X308348Y730597D01*
+X308698Y730499D01*
+X309056Y730433D01*
+X309418Y730400D01*
+X309602D01*
+Y558000D01*
+G37*
+G36*
+X308284Y670883D02*X307858Y671246D01*
+X307322Y671575D01*
+X306740Y671816D01*
+X306316Y671918D01*
+Y724621D01*
+X306592Y724726D01*
+X306919Y724885D01*
+X306985Y724928D01*
+X307044Y724981D01*
+X307094Y725043D01*
+X307133Y725112D01*
+X307161Y725186D01*
+X307177Y725263D01*
+X307181Y725342D01*
+X307173Y725421D01*
+X307152Y725497D01*
+X307120Y725570D01*
+X307077Y725636D01*
+X307024Y725695D01*
+X306962Y725744D01*
+X306893Y725784D01*
+X306819Y725812D01*
+X306742Y725828D01*
+X306663Y725832D01*
+X306584Y725824D01*
+X306507Y725803D01*
+X306436Y725770D01*
+X306316Y725709D01*
+Y731092D01*
+X306437Y731033D01*
+X306509Y731000D01*
+X306584Y730979D01*
+X306663Y730971D01*
+X306741Y730975D01*
+X306818Y730991D01*
+X306892Y731019D01*
+X306960Y731058D01*
+X307021Y731107D01*
+X307074Y731166D01*
+X307117Y731232D01*
+X307149Y731304D01*
+X307170Y731380D01*
+X307178Y731458D01*
+X307174Y731536D01*
+X307158Y731613D01*
+X307130Y731687D01*
+X307091Y731755D01*
+X307042Y731816D01*
+X306983Y731869D01*
+X306917Y731911D01*
+X306592Y732074D01*
+X306316Y732179D01*
+Y732265D01*
+X306386Y732239D01*
+X306463Y732223D01*
+X306542Y732219D01*
+X306621Y732227D01*
+X306697Y732248D01*
+X306770Y732280D01*
+X306836Y732323D01*
+X306895Y732376D01*
+X306944Y732438D01*
+X306984Y732507D01*
+X307012Y732581D01*
+X307028Y732658D01*
+X307032Y732737D01*
+X307024Y732816D01*
+X307003Y732893D01*
+X306970Y732964D01*
+X306847Y733207D01*
+X306750Y733462D01*
+X306677Y733724D01*
+X306628Y733992D01*
+X306603Y734264D01*
+Y734536D01*
+X306628Y734808D01*
+X306677Y735076D01*
+X306750Y735338D01*
+X306847Y735593D01*
+X306967Y735837D01*
+X307000Y735909D01*
+X307021Y735985D01*
+X307029Y736063D01*
+X307025Y736141D01*
+X307009Y736218D01*
+X306981Y736292D01*
+X306942Y736360D01*
+X306893Y736421D01*
+X306834Y736474D01*
+X306768Y736517D01*
+X306696Y736549D01*
+X306620Y736570D01*
+X306542Y736578D01*
+X306464Y736574D01*
+X306387Y736558D01*
+X306316Y736531D01*
+Y746850D01*
+X307612D01*
+X307814Y746614D01*
+X308149Y746328D01*
+X308284Y746245D01*
+Y738179D01*
+X308008Y738074D01*
+X307681Y737915D01*
+X307615Y737872D01*
+X307556Y737819D01*
+X307506Y737757D01*
+X307467Y737688D01*
+X307439Y737614D01*
+X307423Y737537D01*
+X307419Y737458D01*
+X307427Y737379D01*
+X307448Y737303D01*
+X307480Y737230D01*
+X307523Y737164D01*
+X307576Y737105D01*
+X307638Y737056D01*
+X307707Y737016D01*
+X307781Y736988D01*
+X307858Y736972D01*
+X307937Y736968D01*
+X308016Y736976D01*
+X308093Y736997D01*
+X308164Y737030D01*
+X308284Y737091D01*
+Y731708D01*
+X308163Y731767D01*
+X308091Y731800D01*
+X308015Y731821D01*
+X307937Y731829D01*
+X307859Y731825D01*
+X307782Y731809D01*
+X307708Y731781D01*
+X307640Y731742D01*
+X307579Y731693D01*
+X307526Y731634D01*
+X307483Y731568D01*
+X307451Y731496D01*
+X307430Y731420D01*
+X307422Y731342D01*
+X307426Y731264D01*
+X307442Y731187D01*
+X307470Y731113D01*
+X307509Y731045D01*
+X307558Y730984D01*
+X307617Y730931D01*
+X307683Y730889D01*
+X308008Y730726D01*
+X308284Y730621D01*
+Y730535D01*
+X308214Y730561D01*
+X308137Y730577D01*
+X308058Y730581D01*
+X307979Y730573D01*
+X307903Y730552D01*
+X307830Y730520D01*
+X307764Y730477D01*
+X307705Y730424D01*
+X307656Y730362D01*
+X307616Y730293D01*
+X307588Y730219D01*
+X307572Y730142D01*
+X307568Y730063D01*
+X307576Y729984D01*
+X307597Y729907D01*
+X307630Y729836D01*
+X307753Y729593D01*
+X307850Y729338D01*
+X307923Y729076D01*
+X307972Y728808D01*
+X307997Y728536D01*
+Y728264D01*
+X307972Y727992D01*
+X307923Y727724D01*
+X307850Y727462D01*
+X307753Y727207D01*
+X307633Y726963D01*
+X307600Y726891D01*
+X307579Y726816D01*
+X307571Y726737D01*
+X307575Y726659D01*
+X307591Y726582D01*
+X307619Y726508D01*
+X307658Y726440D01*
+X307707Y726379D01*
+X307766Y726326D01*
+X307832Y726283D01*
+X307904Y726251D01*
+X307980Y726230D01*
+X308058Y726222D01*
+X308136Y726226D01*
+X308213Y726242D01*
+X308284Y726269D01*
+Y670883D01*
+G37*
+G36*
+Y652280D02*X308231Y652366D01*
+X308129Y652486D01*
+X308009Y652588D01*
+X307875Y652671D01*
+X307729Y652731D01*
+X307669Y652745D01*
+Y664638D01*
+X307858Y664754D01*
+X308284Y665117D01*
+Y652280D01*
+G37*
+G36*
+Y637467D02*X308259Y637488D01*
+X308125Y637571D01*
+X307979Y637631D01*
+X307826Y637668D01*
+X307669Y637677D01*
+X306316Y637676D01*
+Y643284D01*
+X307576Y643286D01*
+X307729Y643323D01*
+X307875Y643383D01*
+X308009Y643465D01*
+X308129Y643567D01*
+X308231Y643687D01*
+X308284Y643774D01*
+Y637467D01*
+G37*
+G36*
+Y558000D02*X306316D01*
+Y612185D01*
+X307826Y612186D01*
+X307979Y612223D01*
+X308125Y612283D01*
+X308259Y612365D01*
+X308284Y612387D01*
+Y558000D01*
+G37*
+G36*
+X306316Y671918D02*X306128Y671963D01*
+X305500Y672012D01*
+X304872Y671963D01*
+X304260Y671816D01*
+X303678Y671575D01*
+X303142Y671246D01*
+X302854Y671000D01*
+X301646D01*
+X301358Y671246D01*
+X301301Y671281D01*
+Y726873D01*
+X301326Y726808D01*
+X301485Y726481D01*
+X301528Y726415D01*
+X301581Y726356D01*
+X301643Y726306D01*
+X301712Y726267D01*
+X301786Y726239D01*
+X301863Y726223D01*
+X301942Y726219D01*
+X302021Y726227D01*
+X302097Y726248D01*
+X302170Y726280D01*
+X302236Y726323D01*
+X302295Y726376D01*
+X302344Y726438D01*
+X302384Y726507D01*
+X302412Y726581D01*
+X302428Y726658D01*
+X302432Y726737D01*
+X302424Y726816D01*
+X302403Y726893D01*
+X302370Y726964D01*
+X302247Y727207D01*
+X302150Y727462D01*
+X302077Y727724D01*
+X302028Y727992D01*
+X302003Y728264D01*
+Y728536D01*
+X302028Y728808D01*
+X302077Y729076D01*
+X302150Y729338D01*
+X302247Y729593D01*
+X302367Y729837D01*
+X302400Y729909D01*
+X302421Y729985D01*
+X302429Y730063D01*
+X302425Y730141D01*
+X302409Y730218D01*
+X302381Y730292D01*
+X302342Y730360D01*
+X302293Y730421D01*
+X302234Y730474D01*
+X302168Y730517D01*
+X302096Y730549D01*
+X302020Y730570D01*
+X301942Y730578D01*
+X301864Y730574D01*
+X301787Y730558D01*
+X301713Y730530D01*
+X301645Y730491D01*
+X301584Y730442D01*
+X301531Y730383D01*
+X301489Y730317D01*
+X301461Y730262D01*
+X301406Y730461D01*
+X301301Y730736D01*
+Y746850D01*
+X306316D01*
+Y736531D01*
+X306313Y736530D01*
+X306245Y736491D01*
+X306184Y736442D01*
+X306131Y736383D01*
+X306089Y736317D01*
+X305926Y735992D01*
+X305797Y735652D01*
+X305699Y735302D01*
+X305633Y734944D01*
+X305600Y734582D01*
+Y734218D01*
+X305633Y733856D01*
+X305699Y733498D01*
+X305797Y733148D01*
+X305926Y732808D01*
+X306085Y732481D01*
+X306128Y732415D01*
+X306181Y732356D01*
+X306243Y732306D01*
+X306312Y732267D01*
+X306316Y732265D01*
+Y732179D01*
+X306252Y732203D01*
+X305902Y732301D01*
+X305544Y732367D01*
+X305182Y732400D01*
+X304818D01*
+X304456Y732367D01*
+X304098Y732301D01*
+X303748Y732203D01*
+X303408Y732074D01*
+X303081Y731915D01*
+X303015Y731872D01*
+X302956Y731819D01*
+X302906Y731757D01*
+X302867Y731688D01*
+X302839Y731614D01*
+X302823Y731537D01*
+X302819Y731458D01*
+X302827Y731379D01*
+X302848Y731303D01*
+X302880Y731230D01*
+X302923Y731164D01*
+X302976Y731105D01*
+X303038Y731056D01*
+X303107Y731016D01*
+X303181Y730988D01*
+X303258Y730972D01*
+X303337Y730968D01*
+X303416Y730976D01*
+X303493Y730997D01*
+X303564Y731030D01*
+X303807Y731153D01*
+X304062Y731250D01*
+X304324Y731323D01*
+X304592Y731372D01*
+X304864Y731397D01*
+X305136D01*
+X305408Y731372D01*
+X305676Y731323D01*
+X305938Y731250D01*
+X306193Y731153D01*
+X306316Y731092D01*
+Y725709D01*
+X306193Y725647D01*
+X305938Y725550D01*
+X305676Y725477D01*
+X305408Y725428D01*
+X305136Y725403D01*
+X304864D01*
+X304592Y725428D01*
+X304324Y725477D01*
+X304062Y725550D01*
+X303807Y725647D01*
+X303563Y725767D01*
+X303491Y725800D01*
+X303415Y725821D01*
+X303337Y725829D01*
+X303259Y725825D01*
+X303182Y725809D01*
+X303108Y725781D01*
+X303040Y725742D01*
+X302979Y725693D01*
+X302926Y725634D01*
+X302883Y725568D01*
+X302851Y725496D01*
+X302830Y725420D01*
+X302822Y725342D01*
+X302826Y725264D01*
+X302842Y725187D01*
+X302870Y725113D01*
+X302909Y725045D01*
+X302958Y724984D01*
+X303017Y724931D01*
+X303083Y724889D01*
+X303408Y724726D01*
+X303748Y724597D01*
+X304098Y724499D01*
+X304456Y724433D01*
+X304818Y724400D01*
+X305182D01*
+X305544Y724433D01*
+X305902Y724499D01*
+X306252Y724597D01*
+X306316Y724621D01*
+Y671918D01*
+G37*
+G36*
+X301301Y671281D02*X300822Y671575D01*
+X300240Y671816D01*
+X299628Y671963D01*
+X299000Y672012D01*
+X298372Y671963D01*
+X297760Y671816D01*
+X297604Y671751D01*
+Y725209D01*
+X297784D01*
+X298146Y725242D01*
+X298504Y725307D01*
+X298854Y725405D01*
+X299194Y725535D01*
+X299521Y725694D01*
+X299587Y725737D01*
+X299646Y725790D01*
+X299696Y725852D01*
+X299735Y725920D01*
+X299764Y725994D01*
+X299780Y726072D01*
+X299784Y726151D01*
+X299775Y726230D01*
+X299755Y726306D01*
+X299722Y726378D01*
+X299679Y726445D01*
+X299626Y726503D01*
+X299564Y726553D01*
+X299496Y726593D01*
+X299422Y726621D01*
+X299344Y726637D01*
+X299265Y726641D01*
+X299186Y726633D01*
+X299110Y726612D01*
+X299038Y726578D01*
+X298795Y726456D01*
+X298540Y726359D01*
+X298278Y726286D01*
+X298010Y726236D01*
+X297739Y726212D01*
+X297604D01*
+Y732206D01*
+X297739D01*
+X298010Y732181D01*
+X298278Y732132D01*
+X298540Y732058D01*
+X298795Y731961D01*
+X299040Y731842D01*
+X299111Y731808D01*
+X299187Y731788D01*
+X299265Y731779D01*
+X299344Y731783D01*
+X299421Y731800D01*
+X299494Y731828D01*
+X299563Y731867D01*
+X299624Y731916D01*
+X299677Y731975D01*
+X299720Y732040D01*
+X299752Y732112D01*
+X299772Y732188D01*
+X299781Y732266D01*
+X299777Y732345D01*
+X299761Y732422D01*
+X299733Y732496D01*
+X299693Y732564D01*
+X299644Y732625D01*
+X299586Y732678D01*
+X299519Y732720D01*
+X299194Y732883D01*
+X298854Y733012D01*
+X298504Y733110D01*
+X298146Y733176D01*
+X297784Y733209D01*
+X297604D01*
+Y746850D01*
+X301301D01*
+Y730736D01*
+X301276Y730800D01*
+X301117Y731127D01*
+X301074Y731194D01*
+X301021Y731253D01*
+X300959Y731302D01*
+X300891Y731342D01*
+X300817Y731370D01*
+X300739Y731386D01*
+X300660Y731390D01*
+X300581Y731382D01*
+X300505Y731361D01*
+X300433Y731329D01*
+X300366Y731285D01*
+X300308Y731232D01*
+X300258Y731171D01*
+X300218Y731102D01*
+X300190Y731028D01*
+X300174Y730950D01*
+X300170Y730871D01*
+X300178Y730793D01*
+X300199Y730716D01*
+X300233Y730645D01*
+X300355Y730401D01*
+X300452Y730147D01*
+X300525Y729884D01*
+X300575Y729616D01*
+X300599Y729345D01*
+Y729072D01*
+X300575Y728801D01*
+X300525Y728533D01*
+X300452Y728271D01*
+X300355Y728016D01*
+X300236Y727771D01*
+X300202Y727700D01*
+X300182Y727624D01*
+X300173Y727546D01*
+X300177Y727467D01*
+X300193Y727390D01*
+X300221Y727317D01*
+X300260Y727249D01*
+X300310Y727187D01*
+X300368Y727134D01*
+X300434Y727091D01*
+X300506Y727059D01*
+X300582Y727039D01*
+X300660Y727030D01*
+X300739Y727034D01*
+X300816Y727050D01*
+X300889Y727078D01*
+X300958Y727118D01*
+X301019Y727167D01*
+X301072Y727225D01*
+X301113Y727292D01*
+X301141Y727347D01*
+X301197Y727148D01*
+X301301Y726873D01*
+Y671281D01*
+G37*
+G36*
+X306316Y637676D02*X297604Y637673D01*
+Y664249D01*
+X297760Y664184D01*
+X298372Y664037D01*
+X299000Y663988D01*
+X299628Y664037D01*
+X300240Y664184D01*
+X300822Y664425D01*
+X301358Y664754D01*
+X301646Y665000D01*
+X301669D01*
+Y652745D01*
+X301609Y652731D01*
+X301464Y652671D01*
+X301330Y652588D01*
+X301210Y652486D01*
+X301108Y652366D01*
+X301026Y652232D01*
+X300965Y652087D01*
+X300929Y651934D01*
+X300919Y651777D01*
+X300929Y644120D01*
+X300965Y643967D01*
+X301026Y643821D01*
+X301108Y643687D01*
+X301210Y643567D01*
+X301330Y643465D01*
+X301464Y643383D01*
+X301609Y643323D01*
+X301762Y643286D01*
+X301919Y643277D01*
+X306316Y643284D01*
+Y637676D01*
+G37*
+G36*
+Y558000D02*X297604D01*
+Y579962D01*
+X297839Y580059D01*
+X298395Y580400D01*
+X298892Y580824D01*
+X299316Y581321D01*
+X299658Y581878D01*
+X299908Y582481D01*
+X300060Y583117D01*
+X300098Y583768D01*
+X300060Y584419D01*
+X299908Y585054D01*
+X299658Y585657D01*
+X299316Y586214D01*
+X298892Y586711D01*
+X298395Y587135D01*
+X297839Y587476D01*
+X297604Y587574D01*
+Y612182D01*
+X306316Y612185D01*
+Y558000D01*
+G37*
+G36*
+X297604Y750350D02*X286393D01*
+Y752631D01*
+X286749Y752778D01*
+X287353Y753148D01*
+X287892Y753608D01*
+X288352Y754147D01*
+X288722Y754751D01*
+X288993Y755405D01*
+X289158Y756094D01*
+X289200Y756800D01*
+X289158Y757506D01*
+X288993Y758195D01*
+X288722Y758849D01*
+X288352Y759453D01*
+X287892Y759992D01*
+X287353Y760452D01*
+X286749Y760822D01*
+X286393Y760969D01*
+Y762631D01*
+X286749Y762778D01*
+X287353Y763148D01*
+X287892Y763608D01*
+X288352Y764147D01*
+X288722Y764751D01*
+X288993Y765405D01*
+X289158Y766094D01*
+X289200Y766800D01*
+X289158Y767506D01*
+X288993Y768195D01*
+X288722Y768849D01*
+X288352Y769453D01*
+X287892Y769992D01*
+X287353Y770452D01*
+X286749Y770822D01*
+X286393Y770969D01*
+Y772000D01*
+X297604D01*
+Y770238D01*
+X297353Y770452D01*
+X296749Y770822D01*
+X296095Y771093D01*
+X295406Y771258D01*
+X294700Y771314D01*
+X293994Y771258D01*
+X293305Y771093D01*
+X292651Y770822D01*
+X292047Y770452D01*
+X291508Y769992D01*
+X291048Y769453D01*
+X290678Y768849D01*
+X290407Y768195D01*
+X290242Y767506D01*
+X290186Y766800D01*
+X290242Y766094D01*
+X290407Y765405D01*
+X290678Y764751D01*
+X291048Y764147D01*
+X291508Y763608D01*
+X292047Y763148D01*
+X292651Y762778D01*
+X293305Y762507D01*
+X293994Y762342D01*
+X294700Y762286D01*
+X295406Y762342D01*
+X296095Y762507D01*
+X296749Y762778D01*
+X297353Y763148D01*
+X297604Y763362D01*
+Y750350D01*
+G37*
+G36*
+Y671751D02*X297178Y671575D01*
+X296642Y671246D01*
+X296354Y671000D01*
+X295146D01*
+X294858Y671246D01*
+X294322Y671575D01*
+X294319Y671576D01*
+Y727074D01*
+X294388Y727047D01*
+X294466Y727031D01*
+X294545Y727027D01*
+X294623Y727036D01*
+X294700Y727056D01*
+X294772Y727089D01*
+X294838Y727132D01*
+X294897Y727185D01*
+X294947Y727247D01*
+X294986Y727315D01*
+X295014Y727389D01*
+X295031Y727467D01*
+X295035Y727546D01*
+X295026Y727625D01*
+X295006Y727701D01*
+X294972Y727773D01*
+X294850Y728016D01*
+X294753Y728271D01*
+X294679Y728533D01*
+X294630Y728801D01*
+X294605Y729072D01*
+Y729345D01*
+X294630Y729616D01*
+X294679Y729884D01*
+X294753Y730147D01*
+X294850Y730401D01*
+X294969Y730646D01*
+X295003Y730717D01*
+X295023Y730793D01*
+X295032Y730871D01*
+X295028Y730950D01*
+X295011Y731027D01*
+X294983Y731101D01*
+X294944Y731169D01*
+X294895Y731230D01*
+X294837Y731283D01*
+X294771Y731326D01*
+X294699Y731358D01*
+X294623Y731379D01*
+X294545Y731387D01*
+X294466Y731383D01*
+X294389Y731367D01*
+X294319Y731340D01*
+Y746850D01*
+X297604D01*
+Y733209D01*
+X297421D01*
+X297058Y733176D01*
+X296701Y733110D01*
+X296350Y733012D01*
+X296011Y732883D01*
+X295684Y732723D01*
+X295617Y732680D01*
+X295558Y732627D01*
+X295509Y732566D01*
+X295469Y732497D01*
+X295441Y732423D01*
+X295425Y732345D01*
+X295421Y732266D01*
+X295429Y732188D01*
+X295450Y732111D01*
+X295482Y732039D01*
+X295526Y731973D01*
+X295579Y731914D01*
+X295640Y731864D01*
+X295709Y731825D01*
+X295783Y731797D01*
+X295861Y731780D01*
+X295940Y731776D01*
+X296018Y731785D01*
+X296095Y731805D01*
+X296166Y731839D01*
+X296410Y731961D01*
+X296664Y732058D01*
+X296927Y732132D01*
+X297195Y732181D01*
+X297466Y732206D01*
+X297604D01*
+Y726212D01*
+X297466D01*
+X297195Y726236D01*
+X296927Y726286D01*
+X296664Y726359D01*
+X296410Y726456D01*
+X296165Y726575D01*
+X296094Y726609D01*
+X296018Y726630D01*
+X295940Y726638D01*
+X295861Y726634D01*
+X295784Y726618D01*
+X295710Y726590D01*
+X295642Y726551D01*
+X295581Y726501D01*
+X295528Y726443D01*
+X295485Y726377D01*
+X295453Y726305D01*
+X295432Y726229D01*
+X295424Y726151D01*
+X295428Y726072D01*
+X295444Y725995D01*
+X295472Y725922D01*
+X295511Y725853D01*
+X295561Y725792D01*
+X295619Y725739D01*
+X295686Y725698D01*
+X296011Y725535D01*
+X296350Y725405D01*
+X296701Y725307D01*
+X297058Y725242D01*
+X297421Y725209D01*
+X297604D01*
+Y671751D01*
+G37*
+G36*
+X294319Y671576D02*X293740Y671816D01*
+X293128Y671963D01*
+X292500Y672012D01*
+X291872Y671963D01*
+X291260Y671816D01*
+X290678Y671575D01*
+X290142Y671246D01*
+X289854Y671000D01*
+X288146D01*
+X287858Y671246D01*
+X287322Y671575D01*
+X286740Y671816D01*
+X286393Y671899D01*
+Y746850D01*
+X294319D01*
+Y731340D01*
+X294315Y731339D01*
+X294247Y731300D01*
+X294186Y731250D01*
+X294133Y731192D01*
+X294091Y731125D01*
+X293928Y730800D01*
+X293799Y730461D01*
+X293701Y730110D01*
+X293635Y729753D01*
+X293602Y729390D01*
+Y729027D01*
+X293635Y728665D01*
+X293701Y728307D01*
+X293799Y727957D01*
+X293928Y727617D01*
+X294088Y727290D01*
+X294131Y727224D01*
+X294184Y727165D01*
+X294245Y727115D01*
+X294314Y727076D01*
+X294319Y727074D01*
+Y671576D01*
+G37*
+G36*
+X297604Y637673D02*X286393Y637669D01*
+Y643281D01*
+X289576Y643286D01*
+X289729Y643323D01*
+X289875Y643383D01*
+X290009Y643465D01*
+X290129Y643567D01*
+X290231Y643687D01*
+X290313Y643821D01*
+X290373Y643967D01*
+X290410Y644120D01*
+X290419Y644277D01*
+X290410Y651934D01*
+X290373Y652087D01*
+X290313Y652232D01*
+X290231Y652366D01*
+X290129Y652486D01*
+X290009Y652588D01*
+X289875Y652671D01*
+X289729Y652731D01*
+X289669Y652745D01*
+Y665000D01*
+X289854D01*
+X290142Y664754D01*
+X290678Y664425D01*
+X291260Y664184D01*
+X291872Y664037D01*
+X292500Y663988D01*
+X293128Y664037D01*
+X293740Y664184D01*
+X294322Y664425D01*
+X294858Y664754D01*
+X295146Y665000D01*
+X296354D01*
+X296642Y664754D01*
+X297178Y664425D01*
+X297604Y664249D01*
+Y637673D01*
+G37*
+G36*
+Y558000D02*X286393D01*
+Y597250D01*
+X287777D01*
+X287968Y597080D01*
+X288203Y596936D01*
+X288458Y596831D01*
+X288725Y596766D01*
+X289000Y596745D01*
+X289275Y596766D01*
+X289542Y596831D01*
+X289797Y596936D01*
+X290032Y597080D01*
+X290241Y597259D01*
+X290420Y597468D01*
+X290564Y597703D01*
+X290669Y597958D01*
+X290734Y598225D01*
+X290755Y598500D01*
+X290734Y598775D01*
+X290669Y599042D01*
+X290564Y599297D01*
+X290420Y599532D01*
+X290237Y599737D01*
+X289786Y600189D01*
+X289741Y600241D01*
+X289532Y600420D01*
+X289297Y600564D01*
+X289042Y600669D01*
+X288775Y600734D01*
+X288774Y600734D01*
+X288500Y600755D01*
+X288431Y600750D01*
+X286393D01*
+Y611799D01*
+X295455D01*
+X295543Y611792D01*
+X295896Y611820D01*
+X296241Y611903D01*
+X296337Y611942D01*
+X296568Y612038D01*
+X296755Y612153D01*
+X296802Y612182D01*
+X297604Y612182D01*
+Y587574D01*
+X297235Y587726D01*
+X296600Y587879D01*
+X295949Y587930D01*
+X295298Y587879D01*
+X294663Y587726D01*
+X294059Y587476D01*
+X293502Y587135D01*
+X293006Y586711D01*
+X292581Y586214D01*
+X292240Y585657D01*
+X291990Y585054D01*
+X291838Y584419D01*
+X291786Y583768D01*
+X291838Y583117D01*
+X291990Y582481D01*
+X292240Y581878D01*
+X292581Y581321D01*
+X293006Y580824D01*
+X293502Y580400D01*
+X294059Y580059D01*
+X294663Y579809D01*
+X295298Y579657D01*
+X295949Y579605D01*
+X296600Y579657D01*
+X297235Y579809D01*
+X297604Y579962D01*
+Y558000D01*
+G37*
+G36*
+X274693Y609173D02*X274740Y609184D01*
+X275322Y609425D01*
+X275858Y609754D01*
+X276337Y610163D01*
+X276746Y610642D01*
+X277075Y611178D01*
+X277316Y611760D01*
+X277325Y611799D01*
+X286393D01*
+Y600750D01*
+X285595D01*
+X285593Y602109D01*
+X285556Y602262D01*
+X285496Y602407D01*
+X285414Y602542D01*
+X285311Y602661D01*
+X285192Y602764D01*
+X285057Y602846D01*
+X284912Y602906D01*
+X284759Y602943D01*
+X284602Y602952D01*
+X279327Y602943D01*
+X279174Y602906D01*
+X279029Y602846D01*
+X278894Y602764D01*
+X278775Y602661D01*
+X278672Y602542D01*
+X278590Y602407D01*
+X278530Y602262D01*
+X278500Y602137D01*
+X278470Y602262D01*
+X278410Y602407D01*
+X278328Y602542D01*
+X278225Y602661D01*
+X278106Y602764D01*
+X277971Y602846D01*
+X277826Y602906D01*
+X277673Y602943D01*
+X277516Y602952D01*
+X274693Y602947D01*
+Y609173D01*
+G37*
+G36*
+Y746850D02*X286393D01*
+Y671899D01*
+X286128Y671963D01*
+X285500Y672012D01*
+X284872Y671963D01*
+X284260Y671816D01*
+X283678Y671575D01*
+X283142Y671246D01*
+X282663Y670837D01*
+X282254Y670358D01*
+X281925Y669822D01*
+X281684Y669240D01*
+X281537Y668628D01*
+X281488Y668000D01*
+X281537Y667372D01*
+X281684Y666760D01*
+X281925Y666178D01*
+X282254Y665642D01*
+X282663Y665163D01*
+X283142Y664754D01*
+X283669Y664431D01*
+Y652745D01*
+X283609Y652731D01*
+X283464Y652671D01*
+X283330Y652588D01*
+X283210Y652486D01*
+X283108Y652366D01*
+X283026Y652232D01*
+X282965Y652087D01*
+X282929Y651934D01*
+X282919Y651777D01*
+X282929Y644120D01*
+X282965Y643967D01*
+X283026Y643821D01*
+X283108Y643687D01*
+X283210Y643567D01*
+X283330Y643465D01*
+X283464Y643383D01*
+X283609Y643323D01*
+X283762Y643286D01*
+X283919Y643277D01*
+X286393Y643281D01*
+Y637669D01*
+X283512Y637668D01*
+X283359Y637631D01*
+X283214Y637571D01*
+X283080Y637488D01*
+X282960Y637386D01*
+X282858Y637266D01*
+X282776Y637132D01*
+X282715Y636987D01*
+X282679Y636834D01*
+X282669Y636677D01*
+X282675Y622260D01*
+X275836D01*
+X275322Y622575D01*
+X274740Y622816D01*
+X274693Y622827D01*
+Y746850D01*
+G37*
+G36*
+Y772000D02*X286393D01*
+Y770969D01*
+X286095Y771093D01*
+X285406Y771258D01*
+X284700Y771314D01*
+X283994Y771258D01*
+X283305Y771093D01*
+X282651Y770822D01*
+X282047Y770452D01*
+X281508Y769992D01*
+X281048Y769453D01*
+X280678Y768849D01*
+X280407Y768195D01*
+X280242Y767506D01*
+X280186Y766800D01*
+X280242Y766094D01*
+X280407Y765405D01*
+X280678Y764751D01*
+X281048Y764147D01*
+X281508Y763608D01*
+X282047Y763148D01*
+X282651Y762778D01*
+X283305Y762507D01*
+X283994Y762342D01*
+X284700Y762286D01*
+X285406Y762342D01*
+X286095Y762507D01*
+X286393Y762631D01*
+Y760969D01*
+X286095Y761093D01*
+X285406Y761258D01*
+X284700Y761314D01*
+X283994Y761258D01*
+X283305Y761093D01*
+X282651Y760822D01*
+X282047Y760452D01*
+X281508Y759992D01*
+X281048Y759453D01*
+X280678Y758849D01*
+X280407Y758195D01*
+X280242Y757506D01*
+X280186Y756800D01*
+X280242Y756094D01*
+X280407Y755405D01*
+X280678Y754751D01*
+X281048Y754147D01*
+X281508Y753608D01*
+X282047Y753148D01*
+X282651Y752778D01*
+X283305Y752507D01*
+X283994Y752342D01*
+X284700Y752286D01*
+X285406Y752342D01*
+X286095Y752507D01*
+X286393Y752631D01*
+Y750350D01*
+X274693D01*
+Y752287D01*
+X274700Y752286D01*
+X275406Y752342D01*
+X276095Y752507D01*
+X276749Y752778D01*
+X277353Y753148D01*
+X277892Y753608D01*
+X278352Y754147D01*
+X278722Y754751D01*
+X278993Y755405D01*
+X279158Y756094D01*
+X279200Y756800D01*
+X279158Y757506D01*
+X278993Y758195D01*
+X278722Y758849D01*
+X278352Y759453D01*
+X277892Y759992D01*
+X277353Y760452D01*
+X276749Y760822D01*
+X276095Y761093D01*
+X275406Y761258D01*
+X274700Y761314D01*
+X274693Y761313D01*
+Y762287D01*
+X274700Y762286D01*
+X275406Y762342D01*
+X276095Y762507D01*
+X276749Y762778D01*
+X277353Y763148D01*
+X277892Y763608D01*
+X278352Y764147D01*
+X278722Y764751D01*
+X278993Y765405D01*
+X279158Y766094D01*
+X279200Y766800D01*
+X279158Y767506D01*
+X278993Y768195D01*
+X278722Y768849D01*
+X278352Y769453D01*
+X277892Y769992D01*
+X277353Y770452D01*
+X276749Y770822D01*
+X276095Y771093D01*
+X275406Y771258D01*
+X274700Y771314D01*
+X274693Y771313D01*
+Y772000D01*
+G37*
+G36*
+X286393Y558000D02*X274693D01*
+Y595052D01*
+X277673Y595057D01*
+X277826Y595094D01*
+X277971Y595154D01*
+X278106Y595236D01*
+X278225Y595339D01*
+X278328Y595458D01*
+X278410Y595593D01*
+X278470Y595738D01*
+X278500Y595863D01*
+X278530Y595738D01*
+X278590Y595593D01*
+X278672Y595458D01*
+X278775Y595339D01*
+X278894Y595236D01*
+X279029Y595154D01*
+X279174Y595094D01*
+X279327Y595057D01*
+X279484Y595048D01*
+X284759Y595057D01*
+X284912Y595094D01*
+X285057Y595154D01*
+X285192Y595236D01*
+X285311Y595339D01*
+X285414Y595458D01*
+X285496Y595593D01*
+X285556Y595738D01*
+X285593Y595891D01*
+X285602Y596048D01*
+X285600Y597250D01*
+X286393D01*
+Y558000D01*
+G37*
+G36*
+X274693D02*X254693D01*
+Y622017D01*
+X254725Y621997D01*
+X255132Y621829D01*
+X255561Y621726D01*
+X256000Y621691D01*
+X256439Y621726D01*
+X256868Y621829D01*
+X257275Y621997D01*
+X257651Y622228D01*
+X257986Y622514D01*
+X258272Y622849D01*
+X258503Y623225D01*
+X258671Y623632D01*
+X258774Y624061D01*
+X258800Y624500D01*
+X258774Y624939D01*
+X258671Y625368D01*
+X258503Y625775D01*
+X258272Y626151D01*
+X257986Y626486D01*
+X257651Y626772D01*
+X257275Y627003D01*
+X256868Y627171D01*
+X256439Y627274D01*
+X256000Y627309D01*
+X255561Y627274D01*
+X255132Y627171D01*
+X254725Y627003D01*
+X254693Y626983D01*
+Y752287D01*
+X254700Y752286D01*
+X255406Y752342D01*
+X256095Y752507D01*
+X256749Y752778D01*
+X257353Y753148D01*
+X257892Y753608D01*
+X258352Y754147D01*
+X258722Y754751D01*
+X258993Y755405D01*
+X259158Y756094D01*
+X259200Y756800D01*
+X259158Y757506D01*
+X258993Y758195D01*
+X258722Y758849D01*
+X258352Y759453D01*
+X257892Y759992D01*
+X257353Y760452D01*
+X256749Y760822D01*
+X256095Y761093D01*
+X255406Y761258D01*
+X254700Y761314D01*
+X254693Y761313D01*
+Y762287D01*
+X254700Y762286D01*
+X255406Y762342D01*
+X256095Y762507D01*
+X256749Y762778D01*
+X257353Y763148D01*
+X257892Y763608D01*
+X258352Y764147D01*
+X258722Y764751D01*
+X258993Y765405D01*
+X259158Y766094D01*
+X259200Y766800D01*
+X259158Y767506D01*
+X258993Y768195D01*
+X258722Y768849D01*
+X258352Y769453D01*
+X257892Y769992D01*
+X257353Y770452D01*
+X256749Y770822D01*
+X256095Y771093D01*
+X255406Y771258D01*
+X254700Y771314D01*
+X254693Y771313D01*
+Y772000D01*
+X274693D01*
+Y771313D01*
+X273994Y771258D01*
+X273305Y771093D01*
+X272651Y770822D01*
+X272047Y770452D01*
+X271508Y769992D01*
+X271048Y769453D01*
+X270678Y768849D01*
+X270407Y768195D01*
+X270242Y767506D01*
+X270186Y766800D01*
+X270242Y766094D01*
+X270407Y765405D01*
+X270678Y764751D01*
+X271048Y764147D01*
+X271508Y763608D01*
+X272047Y763148D01*
+X272651Y762778D01*
+X273305Y762507D01*
+X273994Y762342D01*
+X274693Y762287D01*
+Y761313D01*
+X273994Y761258D01*
+X273305Y761093D01*
+X272651Y760822D01*
+X272047Y760452D01*
+X271508Y759992D01*
+X271048Y759453D01*
+X270678Y758849D01*
+X270407Y758195D01*
+X270242Y757506D01*
+X270186Y756800D01*
+X270242Y756094D01*
+X270407Y755405D01*
+X270678Y754751D01*
+X271048Y754147D01*
+X271508Y753608D01*
+X272047Y753148D01*
+X272651Y752778D01*
+X273305Y752507D01*
+X273994Y752342D01*
+X274693Y752287D01*
+Y750350D01*
+X273625D01*
+X268869Y755106D01*
+X268993Y755405D01*
+X269158Y756094D01*
+X269200Y756800D01*
+X269158Y757506D01*
+X268993Y758195D01*
+X268722Y758849D01*
+X268352Y759453D01*
+X267892Y759992D01*
+X267353Y760452D01*
+X266749Y760822D01*
+X266095Y761093D01*
+X265406Y761258D01*
+X264700Y761314D01*
+X263994Y761258D01*
+X263305Y761093D01*
+X262651Y760822D01*
+X262047Y760452D01*
+X261508Y759992D01*
+X261048Y759453D01*
+X260678Y758849D01*
+X260407Y758195D01*
+X260242Y757506D01*
+X260186Y756800D01*
+X260242Y756094D01*
+X260407Y755405D01*
+X260678Y754751D01*
+X261048Y754147D01*
+X261508Y753608D01*
+X262047Y753148D01*
+X262651Y752778D01*
+X263305Y752507D01*
+X263994Y752342D01*
+X264700Y752286D01*
+X265406Y752342D01*
+X266095Y752507D01*
+X266394Y752631D01*
+X271614Y747411D01*
+X271659Y747359D01*
+X271868Y747180D01*
+X272103Y747036D01*
+X272358Y746931D01*
+X272625Y746866D01*
+X272626Y746866D01*
+X272900Y746845D01*
+X272969Y746850D01*
+X274693D01*
+Y622827D01*
+X274128Y622963D01*
+X273500Y623012D01*
+X272872Y622963D01*
+X272260Y622816D01*
+X271678Y622575D01*
+X271142Y622246D01*
+X270663Y621837D01*
+X270254Y621358D01*
+X269925Y620822D01*
+X269858Y620661D01*
+X269494Y620234D01*
+X269088Y619571D01*
+X268790Y618853D01*
+X268609Y618098D01*
+X268548Y617323D01*
+X268609Y616548D01*
+X268790Y615793D01*
+X269088Y615075D01*
+X269494Y614412D01*
+X269674Y614200D01*
+X269537Y613628D01*
+X269488Y613000D01*
+X269537Y612372D01*
+X269684Y611760D01*
+X269925Y611178D01*
+X270254Y610642D01*
+X270663Y610163D01*
+X271142Y609754D01*
+X271678Y609425D01*
+X272260Y609184D01*
+X272872Y609037D01*
+X273500Y608988D01*
+X274128Y609037D01*
+X274693Y609173D01*
+Y602947D01*
+X272241Y602943D01*
+X272088Y602906D01*
+X271943Y602846D01*
+X271808Y602764D01*
+X271689Y602661D01*
+X271586Y602542D01*
+X271504Y602407D01*
+X271444Y602262D01*
+X271407Y602109D01*
+X271398Y601952D01*
+X271400Y600750D01*
+X270725D01*
+X269450Y602025D01*
+X269943Y602446D01*
+X270367Y602943D01*
+X270709Y603500D01*
+X270959Y604104D01*
+X271111Y604739D01*
+X271150Y605390D01*
+X271111Y606041D01*
+X270959Y606676D01*
+X270709Y607279D01*
+X270367Y607836D01*
+X269943Y608333D01*
+X269447Y608757D01*
+X268890Y609098D01*
+X268286Y609348D01*
+X267651Y609501D01*
+X267000Y609552D01*
+X266349Y609501D01*
+X265714Y609348D01*
+X265110Y609098D01*
+X264553Y608757D01*
+X264057Y608333D01*
+X263633Y607836D01*
+X263291Y607279D01*
+X263041Y606676D01*
+X262889Y606041D01*
+X262838Y605390D01*
+X262889Y604739D01*
+X263041Y604104D01*
+X263291Y603500D01*
+X263633Y602943D01*
+X264057Y602446D01*
+X264553Y602022D01*
+X265110Y601681D01*
+X265295Y601604D01*
+X265331Y601458D01*
+X265436Y601203D01*
+X265580Y600968D01*
+X265759Y600759D01*
+X265811Y600714D01*
+X268714Y597811D01*
+X268759Y597759D01*
+X268968Y597580D01*
+X269203Y597436D01*
+X269458Y597331D01*
+X269725Y597266D01*
+X269726Y597266D01*
+X270000Y597245D01*
+X270069Y597250D01*
+X271405D01*
+X271407Y595891D01*
+X271444Y595738D01*
+X271504Y595593D01*
+X271586Y595458D01*
+X271689Y595339D01*
+X271808Y595236D01*
+X271943Y595154D01*
+X272088Y595094D01*
+X272241Y595057D01*
+X272398Y595048D01*
+X274693Y595052D01*
+Y558000D01*
+G37*
+G36*
+X254693Y626983D02*X254349Y626772D01*
+X254014Y626486D01*
+X253812Y626250D01*
+X248188D01*
+X247986Y626486D01*
+X247651Y626772D01*
+X247275Y627003D01*
+X246868Y627171D01*
+X246439Y627274D01*
+X246000Y627309D01*
+X245561Y627274D01*
+X245132Y627171D01*
+X244725Y627003D01*
+X244433Y626824D01*
+Y641589D01*
+X247590Y641590D01*
+X247743Y641627D01*
+X247888Y641687D01*
+X248023Y641769D01*
+X248142Y641871D01*
+X248245Y641991D01*
+X248327Y642125D01*
+X248387Y642271D01*
+X248424Y642424D01*
+X248433Y642581D01*
+X248424Y666238D01*
+X248387Y666391D01*
+X248327Y666536D01*
+X248245Y666670D01*
+X248142Y666790D01*
+X248023Y666892D01*
+X247888Y666974D01*
+X247743Y667035D01*
+X247590Y667071D01*
+X247433Y667081D01*
+X244433Y667080D01*
+Y672685D01*
+X247340Y672690D01*
+X247493Y672727D01*
+X247638Y672787D01*
+X247773Y672869D01*
+X247892Y672971D01*
+X247995Y673091D01*
+X248077Y673225D01*
+X248137Y673371D01*
+X248174Y673524D01*
+X248183Y673681D01*
+X248174Y681338D01*
+X248137Y681491D01*
+X248077Y681636D01*
+X247995Y681770D01*
+X247892Y681890D01*
+X247773Y681992D01*
+X247638Y682074D01*
+X247493Y682135D01*
+X247340Y682171D01*
+X247288Y682175D01*
+Y690551D01*
+X247262Y690991D01*
+X247159Y691419D01*
+X246991Y691826D01*
+X246760Y692202D01*
+X246474Y692537D01*
+X246139Y692823D01*
+X245763Y693054D01*
+X245356Y693222D01*
+X244928Y693325D01*
+X244488Y693360D01*
+X244433Y693355D01*
+Y752307D01*
+X244700Y752286D01*
+X245406Y752342D01*
+X246095Y752507D01*
+X246749Y752778D01*
+X247353Y753148D01*
+X247892Y753608D01*
+X248352Y754147D01*
+X248722Y754751D01*
+X248993Y755405D01*
+X249158Y756094D01*
+X249200Y756800D01*
+X249158Y757506D01*
+X248993Y758195D01*
+X248722Y758849D01*
+X248352Y759453D01*
+X247892Y759992D01*
+X247353Y760452D01*
+X246749Y760822D01*
+X246095Y761093D01*
+X245406Y761258D01*
+X244700Y761314D01*
+X244433Y761293D01*
+Y762307D01*
+X244700Y762286D01*
+X245406Y762342D01*
+X246095Y762507D01*
+X246749Y762778D01*
+X247353Y763148D01*
+X247892Y763608D01*
+X248352Y764147D01*
+X248722Y764751D01*
+X248993Y765405D01*
+X249158Y766094D01*
+X249200Y766800D01*
+X249158Y767506D01*
+X248993Y768195D01*
+X248722Y768849D01*
+X248352Y769453D01*
+X247892Y769992D01*
+X247353Y770452D01*
+X246749Y770822D01*
+X246095Y771093D01*
+X245406Y771258D01*
+X244700Y771314D01*
+X244433Y771293D01*
+Y772000D01*
+X254693D01*
+Y771313D01*
+X253994Y771258D01*
+X253305Y771093D01*
+X252651Y770822D01*
+X252047Y770452D01*
+X251508Y769992D01*
+X251048Y769453D01*
+X250678Y768849D01*
+X250407Y768195D01*
+X250242Y767506D01*
+X250186Y766800D01*
+X250242Y766094D01*
+X250407Y765405D01*
+X250678Y764751D01*
+X251048Y764147D01*
+X251508Y763608D01*
+X252047Y763148D01*
+X252651Y762778D01*
+X253305Y762507D01*
+X253994Y762342D01*
+X254693Y762287D01*
+Y761313D01*
+X253994Y761258D01*
+X253305Y761093D01*
+X252651Y760822D01*
+X252047Y760452D01*
+X251508Y759992D01*
+X251048Y759453D01*
+X250678Y758849D01*
+X250407Y758195D01*
+X250242Y757506D01*
+X250186Y756800D01*
+X250242Y756094D01*
+X250407Y755405D01*
+X250678Y754751D01*
+X251048Y754147D01*
+X251508Y753608D01*
+X252047Y753148D01*
+X252651Y752778D01*
+X253305Y752507D01*
+X253994Y752342D01*
+X254693Y752287D01*
+Y626983D01*
+G37*
+G36*
+Y558000D02*X244433D01*
+Y622176D01*
+X244725Y621997D01*
+X245132Y621829D01*
+X245561Y621726D01*
+X246000Y621691D01*
+X246439Y621726D01*
+X246868Y621829D01*
+X247275Y621997D01*
+X247651Y622228D01*
+X247986Y622514D01*
+X248188Y622750D01*
+X253812D01*
+X254014Y622514D01*
+X254349Y622228D01*
+X254693Y622017D01*
+Y558000D01*
+G37*
+G36*
+X244433Y667080D02*X234693Y667076D01*
+Y752287D01*
+X234700Y752286D01*
+X235406Y752342D01*
+X236095Y752507D01*
+X236749Y752778D01*
+X237353Y753148D01*
+X237892Y753608D01*
+X238352Y754147D01*
+X238722Y754751D01*
+X238993Y755405D01*
+X239158Y756094D01*
+X239200Y756800D01*
+X239158Y757506D01*
+X238993Y758195D01*
+X238722Y758849D01*
+X238352Y759453D01*
+X237892Y759992D01*
+X237353Y760452D01*
+X236749Y760822D01*
+X236095Y761093D01*
+X235406Y761258D01*
+X234700Y761314D01*
+X234693Y761313D01*
+Y772000D01*
+X244433D01*
+Y771293D01*
+X243994Y771258D01*
+X243305Y771093D01*
+X242651Y770822D01*
+X242047Y770452D01*
+X241508Y769992D01*
+X241048Y769453D01*
+X240678Y768849D01*
+X240407Y768195D01*
+X240242Y767506D01*
+X240186Y766800D01*
+X240242Y766094D01*
+X240407Y765405D01*
+X240678Y764751D01*
+X241048Y764147D01*
+X241508Y763608D01*
+X242047Y763148D01*
+X242651Y762778D01*
+X243305Y762507D01*
+X243994Y762342D01*
+X244433Y762307D01*
+Y761293D01*
+X243994Y761258D01*
+X243305Y761093D01*
+X242651Y760822D01*
+X242047Y760452D01*
+X241508Y759992D01*
+X241048Y759453D01*
+X240678Y758849D01*
+X240407Y758195D01*
+X240242Y757506D01*
+X240186Y756800D01*
+X240242Y756094D01*
+X240407Y755405D01*
+X240678Y754751D01*
+X241048Y754147D01*
+X241508Y753608D01*
+X242047Y753148D01*
+X242651Y752778D01*
+X243305Y752507D01*
+X243994Y752342D01*
+X244433Y752307D01*
+Y693355D01*
+X244049Y693325D01*
+X243620Y693222D01*
+X243213Y693054D01*
+X242837Y692823D01*
+X242502Y692537D01*
+X242216Y692202D01*
+X241986Y691826D01*
+X241817Y691419D01*
+X241714Y690991D01*
+X241688Y690551D01*
+Y682172D01*
+X241526Y682171D01*
+X241373Y682135D01*
+X241228Y682074D01*
+X241093Y681992D01*
+X240974Y681890D01*
+X240872Y681770D01*
+X240789Y681636D01*
+X240729Y681491D01*
+X240692Y681338D01*
+X240683Y681181D01*
+X240692Y673524D01*
+X240729Y673371D01*
+X240789Y673225D01*
+X240872Y673091D01*
+X240974Y672971D01*
+X241093Y672869D01*
+X241228Y672787D01*
+X241373Y672727D01*
+X241526Y672690D01*
+X241683Y672681D01*
+X244433Y672685D01*
+Y667080D01*
+G37*
+G36*
+X234693Y667076D02*X226433Y667073D01*
+Y672685D01*
+X229340Y672690D01*
+X229493Y672727D01*
+X229638Y672787D01*
+X229773Y672869D01*
+X229892Y672971D01*
+X229995Y673091D01*
+X230077Y673225D01*
+X230137Y673371D01*
+X230174Y673524D01*
+X230183Y673681D01*
+X230174Y681338D01*
+X230137Y681491D01*
+X230077Y681636D01*
+X229995Y681770D01*
+X229892Y681890D01*
+X229773Y681992D01*
+X229638Y682074D01*
+X229493Y682135D01*
+X229340Y682171D01*
+X229183Y682181D01*
+X228784Y682180D01*
+Y690551D01*
+X228758Y690991D01*
+X228655Y691419D01*
+X228487Y691826D01*
+X228256Y692202D01*
+X227970Y692537D01*
+X227635Y692823D01*
+X227259Y693054D01*
+X226852Y693222D01*
+X226433Y693323D01*
+Y752647D01*
+X226749Y752778D01*
+X227353Y753148D01*
+X227892Y753608D01*
+X228352Y754147D01*
+X228722Y754751D01*
+X228993Y755405D01*
+X229158Y756094D01*
+X229200Y756800D01*
+X229158Y757506D01*
+X228993Y758195D01*
+X228722Y758849D01*
+X228352Y759453D01*
+X227892Y759992D01*
+X227353Y760452D01*
+X226749Y760822D01*
+X226433Y760953D01*
+Y762647D01*
+X226749Y762778D01*
+X227353Y763148D01*
+X227892Y763608D01*
+X228352Y764147D01*
+X228722Y764751D01*
+X228993Y765405D01*
+X229158Y766094D01*
+X229200Y766800D01*
+X229158Y767506D01*
+X228993Y768195D01*
+X228722Y768849D01*
+X228352Y769453D01*
+X227892Y769992D01*
+X227353Y770452D01*
+X226749Y770822D01*
+X226433Y770953D01*
+Y772000D01*
+X234693D01*
+Y761313D01*
+X233994Y761258D01*
+X233305Y761093D01*
+X232651Y760822D01*
+X232047Y760452D01*
+X231508Y759992D01*
+X231048Y759453D01*
+X230678Y758849D01*
+X230407Y758195D01*
+X230242Y757506D01*
+X230186Y756800D01*
+X230242Y756094D01*
+X230407Y755405D01*
+X230678Y754751D01*
+X231048Y754147D01*
+X231508Y753608D01*
+X232047Y753148D01*
+X232651Y752778D01*
+X233305Y752507D01*
+X233994Y752342D01*
+X234693Y752287D01*
+Y667076D01*
+G37*
+G36*
+X244433Y558000D02*X226433D01*
+Y610662D01*
+X226894Y610853D01*
+X227430Y611182D01*
+X227909Y611591D01*
+X228318Y612070D01*
+X228429Y612250D01*
+X229685D01*
+X229687Y610938D01*
+X229724Y610785D01*
+X229784Y610640D01*
+X229866Y610506D01*
+X229968Y610386D01*
+X230088Y610284D01*
+X230222Y610201D01*
+X230368Y610141D01*
+X230521Y610105D01*
+X230678Y610095D01*
+X235952Y610105D01*
+X236105Y610141D01*
+X236251Y610201D01*
+X236385Y610284D01*
+X236505Y610386D01*
+X236607Y610506D01*
+X236689Y610640D01*
+X236750Y610785D01*
+X236780Y610910D01*
+X236810Y610785D01*
+X236870Y610640D01*
+X236952Y610506D01*
+X237054Y610386D01*
+X237174Y610284D01*
+X237308Y610201D01*
+X237454Y610141D01*
+X237607Y610105D01*
+X237764Y610095D01*
+X243038Y610105D01*
+X243191Y610141D01*
+X243337Y610201D01*
+X243471Y610284D01*
+X243591Y610386D01*
+X243693Y610506D01*
+X243775Y610640D01*
+X243836Y610785D01*
+X243872Y610938D01*
+X243882Y611095D01*
+X243872Y617156D01*
+X243836Y617309D01*
+X243775Y617455D01*
+X243693Y617589D01*
+X243591Y617709D01*
+X243471Y617811D01*
+X243337Y617893D01*
+X243191Y617953D01*
+X243038Y617990D01*
+X242882Y617999D01*
+X237607Y617990D01*
+X237454Y617953D01*
+X237308Y617893D01*
+X237174Y617811D01*
+X237054Y617709D01*
+X236952Y617589D01*
+X236870Y617455D01*
+X236810Y617309D01*
+X236780Y617184D01*
+X236750Y617309D01*
+X236689Y617455D01*
+X236607Y617589D01*
+X236505Y617709D01*
+X236385Y617811D01*
+X236251Y617893D01*
+X236105Y617953D01*
+X235952Y617990D01*
+X235796Y617999D01*
+X230521Y617990D01*
+X230368Y617953D01*
+X230222Y617893D01*
+X230088Y617811D01*
+X229968Y617709D01*
+X229866Y617589D01*
+X229784Y617455D01*
+X229724Y617309D01*
+X229687Y617156D01*
+X229678Y616999D01*
+X229678Y616750D01*
+X228340D01*
+X228318Y616786D01*
+X227909Y617265D01*
+X227430Y617674D01*
+X226894Y618003D01*
+X226433Y618194D01*
+Y628966D01*
+X226495Y628893D01*
+X226615Y628791D01*
+X226749Y628709D01*
+X226895Y628648D01*
+X227048Y628612D01*
+X227204Y628602D01*
+X232430Y628612D01*
+X230971Y627153D01*
+X230904Y627096D01*
+X230674Y626827D01*
+X230489Y626525D01*
+X230354Y626197D01*
+X230271Y625853D01*
+X230271Y625853D01*
+X230269Y625824D01*
+X230142Y625746D01*
+X229663Y625337D01*
+X229254Y624858D01*
+X228925Y624322D01*
+X228684Y623740D01*
+X228537Y623128D01*
+X228488Y622500D01*
+X228537Y621872D01*
+X228684Y621260D01*
+X228925Y620678D01*
+X229254Y620142D01*
+X229663Y619663D01*
+X230142Y619254D01*
+X230678Y618925D01*
+X231260Y618684D01*
+X231872Y618537D01*
+X232500Y618488D01*
+X233128Y618537D01*
+X233740Y618684D01*
+X234322Y618925D01*
+X234858Y619254D01*
+X235337Y619663D01*
+X235746Y620142D01*
+X236075Y620678D01*
+X236316Y621260D01*
+X236463Y621872D01*
+X236500Y622500D01*
+X236463Y623128D01*
+X236316Y623740D01*
+X236075Y624322D01*
+X235746Y624858D01*
+X235421Y625239D01*
+X237029Y626847D01*
+X237096Y626904D01*
+X237326Y627173D01*
+X237326Y627173D01*
+X237511Y627475D01*
+X237646Y627803D01*
+X237729Y628147D01*
+X237757Y628500D01*
+X237750Y628588D01*
+Y632412D01*
+X237757Y632500D01*
+X237729Y632853D01*
+X237646Y633197D01*
+X237511Y633525D01*
+X237326Y633827D01*
+X237096Y634096D01*
+X236827Y634326D01*
+X236525Y634511D01*
+X236197Y634646D01*
+X235853Y634729D01*
+X235500Y634757D01*
+X235412Y634750D01*
+X233315D01*
+X233313Y635663D01*
+X233276Y635816D01*
+X233216Y635962D01*
+X233134Y636096D01*
+X233032Y636216D01*
+X232912Y636318D01*
+X232778Y636400D01*
+X232632Y636460D01*
+X232479Y636497D01*
+X232322Y636506D01*
+X227048Y636497D01*
+X226895Y636460D01*
+X226749Y636400D01*
+X226615Y636318D01*
+X226495Y636216D01*
+X226433Y636143D01*
+Y641582D01*
+X244433Y641589D01*
+Y626824D01*
+X244349Y626772D01*
+X244014Y626486D01*
+X243728Y626151D01*
+X243497Y625775D01*
+X243329Y625368D01*
+X243226Y624939D01*
+X243191Y624500D01*
+X243226Y624061D01*
+X243329Y623632D01*
+X243497Y623225D01*
+X243728Y622849D01*
+X244014Y622514D01*
+X244349Y622228D01*
+X244433Y622176D01*
+Y558000D01*
+G37*
+G36*
+X219419Y640500D02*X222000D01*
+X222549Y640532D01*
+X223085Y640661D01*
+X223594Y640872D01*
+X224064Y641160D01*
+X224483Y641517D01*
+X224537Y641581D01*
+X226433Y641582D01*
+Y636143D01*
+X226393Y636096D01*
+X226311Y635962D01*
+X226250Y635816D01*
+X226220Y635691D01*
+X226190Y635816D01*
+X226130Y635962D01*
+X226048Y636096D01*
+X225946Y636216D01*
+X225826Y636318D01*
+X225692Y636400D01*
+X225546Y636460D01*
+X225393Y636497D01*
+X225236Y636506D01*
+X219962Y636497D01*
+X219809Y636460D01*
+X219663Y636400D01*
+X219529Y636318D01*
+X219419Y636224D01*
+Y640500D01*
+G37*
+G36*
+Y772000D02*X226433D01*
+Y770953D01*
+X226095Y771093D01*
+X225406Y771258D01*
+X224700Y771314D01*
+X223994Y771258D01*
+X223305Y771093D01*
+X222651Y770822D01*
+X222047Y770452D01*
+X221508Y769992D01*
+X221048Y769453D01*
+X220678Y768849D01*
+X220407Y768195D01*
+X220242Y767506D01*
+X220186Y766800D01*
+X220242Y766094D01*
+X220407Y765405D01*
+X220678Y764751D01*
+X221048Y764147D01*
+X221508Y763608D01*
+X222047Y763148D01*
+X222651Y762778D01*
+X223305Y762507D01*
+X223994Y762342D01*
+X224700Y762286D01*
+X225406Y762342D01*
+X226095Y762507D01*
+X226433Y762647D01*
+Y760953D01*
+X226095Y761093D01*
+X225406Y761258D01*
+X224700Y761314D01*
+X223994Y761258D01*
+X223305Y761093D01*
+X222651Y760822D01*
+X222047Y760452D01*
+X221508Y759992D01*
+X221048Y759453D01*
+X220678Y758849D01*
+X220407Y758195D01*
+X220242Y757506D01*
+X220186Y756800D01*
+X220242Y756094D01*
+X220407Y755405D01*
+X220678Y754751D01*
+X221048Y754147D01*
+X221508Y753608D01*
+X222047Y753148D01*
+X222651Y752778D01*
+X223305Y752507D01*
+X223994Y752342D01*
+X224700Y752286D01*
+X225406Y752342D01*
+X226095Y752507D01*
+X226433Y752647D01*
+Y693323D01*
+X226424Y693325D01*
+X225984Y693360D01*
+X225545Y693325D01*
+X225116Y693222D01*
+X224709Y693054D01*
+X224333Y692823D01*
+X223998Y692537D01*
+X223712Y692202D01*
+X223482Y691826D01*
+X223313Y691419D01*
+X223210Y690991D01*
+X223184Y690551D01*
+Y682048D01*
+X223093Y681992D01*
+X222974Y681890D01*
+X222872Y681770D01*
+X222789Y681636D01*
+X222729Y681491D01*
+X222692Y681338D01*
+X222683Y681181D01*
+X222692Y673524D01*
+X222729Y673371D01*
+X222789Y673225D01*
+X222872Y673091D01*
+X222974Y672971D01*
+X223093Y672869D01*
+X223228Y672787D01*
+X223373Y672727D01*
+X223526Y672690D01*
+X223683Y672681D01*
+X226433Y672685D01*
+Y667073D01*
+X223276Y667071D01*
+X223123Y667035D01*
+X222978Y666974D01*
+X222843Y666892D01*
+X222724Y666790D01*
+X222622Y666670D01*
+X222539Y666536D01*
+X222479Y666391D01*
+X222442Y666238D01*
+X222433Y666081D01*
+X222439Y651500D01*
+X219419D01*
+Y772000D01*
+G37*
+G36*
+X226433Y558000D02*X219419D01*
+Y601637D01*
+X219425Y601637D01*
+X220076Y601688D01*
+X220711Y601841D01*
+X221315Y602090D01*
+X221872Y602432D01*
+X222368Y602856D01*
+X222793Y603353D01*
+X223134Y603910D01*
+X223384Y604513D01*
+X223536Y605148D01*
+X223575Y605799D01*
+X223536Y606450D01*
+X223384Y607085D01*
+X223134Y607689D01*
+X222793Y608246D01*
+X222368Y608742D01*
+X221872Y609167D01*
+X221315Y609508D01*
+X220711Y609758D01*
+X220076Y609910D01*
+X219425Y609962D01*
+X219419Y609961D01*
+Y618994D01*
+X219500Y618988D01*
+X220128Y619037D01*
+X220740Y619184D01*
+X221322Y619425D01*
+X221858Y619754D01*
+X222337Y620163D01*
+X222746Y620642D01*
+X223075Y621178D01*
+X223316Y621760D01*
+X223463Y622372D01*
+X223500Y623000D01*
+X223463Y623628D01*
+X223316Y624240D01*
+X223075Y624822D01*
+X222746Y625358D01*
+X222337Y625837D01*
+X221858Y626246D01*
+X221322Y626575D01*
+X220740Y626816D01*
+X220128Y626963D01*
+X219500Y627012D01*
+X219419Y627006D01*
+Y628885D01*
+X219529Y628791D01*
+X219663Y628709D01*
+X219809Y628648D01*
+X219962Y628612D01*
+X220118Y628602D01*
+X225393Y628612D01*
+X225546Y628648D01*
+X225692Y628709D01*
+X225826Y628791D01*
+X225946Y628893D01*
+X226048Y629013D01*
+X226130Y629147D01*
+X226190Y629292D01*
+X226220Y629417D01*
+X226250Y629292D01*
+X226311Y629147D01*
+X226393Y629013D01*
+X226433Y628966D01*
+Y618194D01*
+X226312Y618244D01*
+X225700Y618391D01*
+X225072Y618440D01*
+X224444Y618391D01*
+X223832Y618244D01*
+X223250Y618003D01*
+X222714Y617674D01*
+X222235Y617265D01*
+X221826Y616786D01*
+X221497Y616250D01*
+X221256Y615668D01*
+X221109Y615056D01*
+X221060Y614428D01*
+X221109Y613800D01*
+X221256Y613188D01*
+X221497Y612606D01*
+X221826Y612070D01*
+X222235Y611591D01*
+X222714Y611182D01*
+X223250Y610853D01*
+X223832Y610612D01*
+X224444Y610465D01*
+X225072Y610416D01*
+X225700Y610465D01*
+X226312Y610612D01*
+X226433Y610662D01*
+Y558000D01*
+G37*
+G36*
+X219419Y627006D02*X218872Y626963D01*
+X218750Y626934D01*
+Y630068D01*
+X218986Y630304D01*
+X219126D01*
+X219128Y629445D01*
+X219164Y629292D01*
+X219225Y629147D01*
+X219307Y629013D01*
+X219409Y628893D01*
+X219419Y628885D01*
+Y627006D01*
+G37*
+G36*
+X214693Y638770D02*X214983Y639017D01*
+X215072Y639122D01*
+X216450Y640500D01*
+X219419D01*
+Y636224D01*
+X219409Y636216D01*
+X219307Y636096D01*
+X219225Y635962D01*
+X219164Y635816D01*
+X219128Y635663D01*
+X219118Y635506D01*
+X219120Y634804D01*
+X218143D01*
+X218054Y634811D01*
+X217701Y634783D01*
+X217357Y634701D01*
+X217030Y634565D01*
+X216728Y634380D01*
+X216728Y634380D01*
+X216458Y634150D01*
+X216401Y634083D01*
+X214971Y632653D01*
+X214904Y632596D01*
+X214693Y632349D01*
+Y638770D01*
+G37*
+G36*
+Y772000D02*X219419D01*
+Y651500D01*
+X214693D01*
+Y762287D01*
+X214700Y762286D01*
+X215406Y762342D01*
+X216095Y762507D01*
+X216749Y762778D01*
+X217353Y763148D01*
+X217892Y763608D01*
+X218352Y764147D01*
+X218722Y764751D01*
+X218993Y765405D01*
+X219158Y766094D01*
+X219200Y766800D01*
+X219158Y767506D01*
+X218993Y768195D01*
+X218722Y768849D01*
+X218352Y769453D01*
+X217892Y769992D01*
+X217353Y770452D01*
+X216749Y770822D01*
+X216095Y771093D01*
+X215406Y771258D01*
+X214700Y771314D01*
+X214693Y771313D01*
+Y772000D01*
+G37*
+G36*
+X219419Y558000D02*X214693D01*
+Y624651D01*
+X214904Y624404D01*
+X214971Y624347D01*
+X215567Y623751D01*
+X215537Y623628D01*
+X215488Y623000D01*
+X215537Y622372D01*
+X215684Y621760D01*
+X215925Y621178D01*
+X216254Y620642D01*
+X216663Y620163D01*
+X217142Y619754D01*
+X217678Y619425D01*
+X218260Y619184D01*
+X218872Y619037D01*
+X219419Y618994D01*
+Y609961D01*
+X218774Y609910D01*
+X218139Y609758D01*
+X217536Y609508D01*
+X216979Y609167D01*
+X216482Y608742D01*
+X216058Y608246D01*
+X215716Y607689D01*
+X215467Y607085D01*
+X215314Y606450D01*
+X215263Y605799D01*
+X215314Y605148D01*
+X215467Y604513D01*
+X215716Y603910D01*
+X216058Y603353D01*
+X216482Y602856D01*
+X216979Y602432D01*
+X217536Y602090D01*
+X218139Y601841D01*
+X218774Y601688D01*
+X219419Y601637D01*
+Y558000D01*
+G37*
+G36*
+X214693D02*X204693D01*
+Y752287D01*
+X204700Y752286D01*
+X205406Y752342D01*
+X206095Y752507D01*
+X206749Y752778D01*
+X207353Y753148D01*
+X207892Y753608D01*
+X208352Y754147D01*
+X208722Y754751D01*
+X208993Y755405D01*
+X209158Y756094D01*
+X209200Y756800D01*
+X209158Y757506D01*
+X208993Y758195D01*
+X208722Y758849D01*
+X208352Y759453D01*
+X207892Y759992D01*
+X207353Y760452D01*
+X206749Y760822D01*
+X206095Y761093D01*
+X205406Y761258D01*
+X204700Y761314D01*
+X204693Y761313D01*
+Y762287D01*
+X204700Y762286D01*
+X205406Y762342D01*
+X206095Y762507D01*
+X206749Y762778D01*
+X207353Y763148D01*
+X207892Y763608D01*
+X208352Y764147D01*
+X208722Y764751D01*
+X208993Y765405D01*
+X209158Y766094D01*
+X209200Y766800D01*
+X209158Y767506D01*
+X208993Y768195D01*
+X208722Y768849D01*
+X208352Y769453D01*
+X207892Y769992D01*
+X207353Y770452D01*
+X206749Y770822D01*
+X206095Y771093D01*
+X205406Y771258D01*
+X204700Y771314D01*
+X204693Y771313D01*
+Y772000D01*
+X214693D01*
+Y771313D01*
+X213994Y771258D01*
+X213305Y771093D01*
+X212651Y770822D01*
+X212047Y770452D01*
+X211508Y769992D01*
+X211048Y769453D01*
+X210678Y768849D01*
+X210407Y768195D01*
+X210242Y767506D01*
+X210186Y766800D01*
+X210242Y766094D01*
+X210407Y765405D01*
+X210678Y764751D01*
+X211048Y764147D01*
+X211508Y763608D01*
+X212047Y763148D01*
+X212651Y762778D01*
+X213305Y762507D01*
+X213994Y762342D01*
+X214693Y762287D01*
+Y651500D01*
+X209157D01*
+X209000Y651512D01*
+X208372Y651463D01*
+X207760Y651316D01*
+X207178Y651075D01*
+X206642Y650746D01*
+X206163Y650337D01*
+X205754Y649858D01*
+X205425Y649322D01*
+X205184Y648740D01*
+X205037Y648128D01*
+X204988Y647500D01*
+X205037Y646872D01*
+X205184Y646260D01*
+X205425Y645678D01*
+X205500Y645556D01*
+Y643444D01*
+X205425Y643322D01*
+X205184Y642740D01*
+X205037Y642128D01*
+X204988Y641500D01*
+X205037Y640872D01*
+X205184Y640260D01*
+X205425Y639678D01*
+X205754Y639142D01*
+X206163Y638663D01*
+X206642Y638254D01*
+X207178Y637925D01*
+X207760Y637684D01*
+X208372Y637537D01*
+X209000Y637488D01*
+X209628Y637537D01*
+X210240Y637684D01*
+X210822Y637925D01*
+X210944Y638000D01*
+X212363D01*
+X212500Y637989D01*
+X213049Y638032D01*
+X213049Y638032D01*
+X213585Y638161D01*
+X214094Y638372D01*
+X214564Y638660D01*
+X214693Y638770D01*
+Y632349D01*
+X214674Y632327D01*
+X214489Y632025D01*
+X214354Y631697D01*
+X214271Y631353D01*
+X214271Y631353D01*
+X214243Y631000D01*
+X214250Y630912D01*
+Y626088D01*
+X214243Y626000D01*
+X214271Y625647D01*
+Y625647D01*
+X214354Y625303D01*
+X214489Y624975D01*
+X214559Y624861D01*
+X214674Y624673D01*
+X214674Y624673D01*
+X214693Y624651D01*
+Y558000D01*
+G37*
+G36*
+X204693D02*X187992D01*
+Y726985D01*
+X188000Y726985D01*
+X188785Y727046D01*
+X189550Y727230D01*
+X190277Y727531D01*
+X190948Y727942D01*
+X191546Y728454D01*
+X192058Y729052D01*
+X192469Y729723D01*
+X192770Y730450D01*
+X192954Y731215D01*
+X193000Y732000D01*
+X192954Y732785D01*
+X192770Y733550D01*
+X192469Y734277D01*
+X192058Y734948D01*
+X191546Y735546D01*
+X190948Y736058D01*
+X190277Y736469D01*
+X189550Y736770D01*
+X188785Y736954D01*
+X188000Y737015D01*
+X187992Y737015D01*
+Y738000D01*
+X197000D01*
+Y752932D01*
+X197353Y753148D01*
+X197892Y753608D01*
+X198352Y754147D01*
+X198722Y754751D01*
+X198993Y755405D01*
+X199158Y756094D01*
+X199200Y756800D01*
+X199158Y757506D01*
+X198993Y758195D01*
+X198722Y758849D01*
+X198352Y759453D01*
+X197892Y759992D01*
+X197353Y760452D01*
+X197000Y760668D01*
+Y762932D01*
+X197353Y763148D01*
+X197892Y763608D01*
+X198352Y764147D01*
+X198722Y764751D01*
+X198993Y765405D01*
+X199158Y766094D01*
+X199200Y766800D01*
+X199158Y767506D01*
+X198993Y768195D01*
+X198722Y768849D01*
+X198352Y769453D01*
+X197892Y769992D01*
+X197353Y770452D01*
+X197000Y770668D01*
+Y772000D01*
+X204693D01*
+Y771313D01*
+X203994Y771258D01*
+X203305Y771093D01*
+X202651Y770822D01*
+X202047Y770452D01*
+X201508Y769992D01*
+X201048Y769453D01*
+X200678Y768849D01*
+X200407Y768195D01*
+X200242Y767506D01*
+X200186Y766800D01*
+X200242Y766094D01*
+X200407Y765405D01*
+X200678Y764751D01*
+X201048Y764147D01*
+X201508Y763608D01*
+X202047Y763148D01*
+X202651Y762778D01*
+X203305Y762507D01*
+X203994Y762342D01*
+X204693Y762287D01*
+Y761313D01*
+X203994Y761258D01*
+X203305Y761093D01*
+X202651Y760822D01*
+X202047Y760452D01*
+X201508Y759992D01*
+X201048Y759453D01*
+X200678Y758849D01*
+X200407Y758195D01*
+X200242Y757506D01*
+X200186Y756800D01*
+X200242Y756094D01*
+X200407Y755405D01*
+X200678Y754751D01*
+X201048Y754147D01*
+X201508Y753608D01*
+X202047Y753148D01*
+X202651Y752778D01*
+X203305Y752507D01*
+X203994Y752342D01*
+X204693Y752287D01*
+Y558000D01*
+G37*
+G36*
+X187992D02*X180529D01*
+Y591105D01*
+X181050Y591230D01*
+X181777Y591531D01*
+X182448Y591942D01*
+X183046Y592454D01*
+X183558Y593052D01*
+X183969Y593723D01*
+X184270Y594450D01*
+X184454Y595215D01*
+X184500Y596000D01*
+X184454Y596785D01*
+X184270Y597550D01*
+X183969Y598277D01*
+X183558Y598948D01*
+X183046Y599546D01*
+X182448Y600058D01*
+X181777Y600469D01*
+X181050Y600770D01*
+X180529Y600895D01*
+Y705114D01*
+X180535Y705113D01*
+X181187Y705164D01*
+X181822Y705317D01*
+X182425Y705567D01*
+X182982Y705908D01*
+X183479Y706332D01*
+X183903Y706829D01*
+X184244Y707386D01*
+X184494Y707989D01*
+X184647Y708624D01*
+X184685Y709276D01*
+X184647Y709927D01*
+X184494Y710562D01*
+X184244Y711165D01*
+X183903Y711722D01*
+X183479Y712219D01*
+X182982Y712643D01*
+X182425Y712984D01*
+X181822Y713234D01*
+X181187Y713387D01*
+X180535Y713438D01*
+X180529Y713437D01*
+Y738000D01*
+X187992D01*
+Y737015D01*
+X187215Y736954D01*
+X186450Y736770D01*
+X185723Y736469D01*
+X185052Y736058D01*
+X184454Y735546D01*
+X183942Y734948D01*
+X183531Y734277D01*
+X183230Y733550D01*
+X183046Y732785D01*
+X182985Y732000D01*
+X183046Y731215D01*
+X183230Y730450D01*
+X183531Y729723D01*
+X183942Y729052D01*
+X184454Y728454D01*
+X185052Y727942D01*
+X185723Y727531D01*
+X186450Y727230D01*
+X187215Y727046D01*
+X187992Y726985D01*
+Y558000D01*
+G37*
+G36*
+X180529D02*X171000D01*
+Y584000D01*
+X159492D01*
+Y590985D01*
+X159500Y590985D01*
+X160285Y591046D01*
+X161050Y591230D01*
+X161777Y591531D01*
+X162448Y591942D01*
+X163046Y592454D01*
+X163558Y593052D01*
+X163969Y593723D01*
+X164270Y594450D01*
+X164454Y595215D01*
+X164500Y596000D01*
+X164454Y596785D01*
+X164270Y597550D01*
+X163969Y598277D01*
+X163558Y598948D01*
+X163046Y599546D01*
+X162448Y600058D01*
+X161777Y600469D01*
+X161050Y600770D01*
+X160285Y600954D01*
+X159500Y601015D01*
+X159492Y601015D01*
+Y738000D01*
+X180529D01*
+Y713437D01*
+X179884Y713387D01*
+X179249Y713234D01*
+X178646Y712984D01*
+X178089Y712643D01*
+X177592Y712219D01*
+X177168Y711722D01*
+X176827Y711165D01*
+X176577Y710562D01*
+X176424Y709927D01*
+X176373Y709276D01*
+X176424Y708624D01*
+X176577Y707989D01*
+X176827Y707386D01*
+X177168Y706829D01*
+X177592Y706332D01*
+X178089Y705908D01*
+X178646Y705567D01*
+X179249Y705317D01*
+X179884Y705164D01*
+X180529Y705114D01*
+Y600895D01*
+X180285Y600954D01*
+X179500Y601015D01*
+X178715Y600954D01*
+X177950Y600770D01*
+X177223Y600469D01*
+X176552Y600058D01*
+X175954Y599546D01*
+X175442Y598948D01*
+X175031Y598277D01*
+X174730Y597550D01*
+X174546Y596785D01*
+X174485Y596000D01*
+X174546Y595215D01*
+X174730Y594450D01*
+X175031Y593723D01*
+X175442Y593052D01*
+X175954Y592454D01*
+X176552Y591942D01*
+X177223Y591531D01*
+X177950Y591230D01*
+X178715Y591046D01*
+X179500Y590985D01*
+X180285Y591046D01*
+X180529Y591105D01*
+Y558000D01*
+G37*
+G36*
+X159492Y584000D02*X145000D01*
+Y738000D01*
+X159492D01*
+Y601015D01*
+X158715Y600954D01*
+X157950Y600770D01*
+X157223Y600469D01*
+X156552Y600058D01*
+X155954Y599546D01*
+X155442Y598948D01*
+X155031Y598277D01*
+X154730Y597550D01*
+X154546Y596785D01*
+X154485Y596000D01*
+X154546Y595215D01*
+X154730Y594450D01*
+X155031Y593723D01*
+X155442Y593052D01*
+X155954Y592454D01*
+X156552Y591942D01*
+X157223Y591531D01*
+X157950Y591230D01*
+X158715Y591046D01*
+X159492Y590985D01*
+Y584000D01*
+G37*
+G54D36*X441461Y702902D02*X435709Y708654D01*
+X426295D01*
+X421827Y713122D01*
+Y717937D01*
+X416654Y723110D01*
+X414961Y718110D02*X407087D01*
+X407598Y723110D02*X406299Y724409D01*
+X412890Y723110D02*X407598D01*
+X416654D02*X412732D01*
+G54D37*X417346Y634969D02*X464339D01*
+X420936Y597866D02*X411236D01*
+X421436Y598366D02*X420936Y597866D01*
+X464236D02*Y621020D01*
+X443736Y597866D02*X464236D01*
+X443236Y598366D02*X443736Y597866D01*
+G54D38*X436716Y620555D02*X464275D01*
+G54D37*X437106D02*X464275D01*
+G54D36*X407087Y718110D02*X406299Y717323D01*
+X385419Y719153D02*X387653D01*
+X391900Y723400D01*
+X407480Y744094D02*X406299Y745275D01*
+X412598Y744094D02*X407480D01*
+X407086Y738976D02*X406299Y738189D01*
+X412598Y738976D02*X407086D01*
+X391800Y743700D02*X388700Y740600D01*
+X392000Y729000D02*X387673Y733327D01*
+X384238D01*
+X388700Y740600D02*X384400D01*
+X357500Y741000D02*X355500Y743000D01*
+X348000D01*
+X391800Y702300D02*X387900Y698400D01*
+X384000D01*
+G54D39*X391850Y702350D02*X387700Y698200D01*
+X384400D01*
+G54D36*X392000Y708200D02*X388133Y712067D01*
+X385419D01*
+X384238Y691201D02*X387899D01*
+X391900Y687200D01*
+G54D39*X384200Y691201D02*Y682700D01*
+X391800Y702300D02*X395000D01*
+X397200Y704500D01*
+G54D38*X285543Y667543D02*X286000Y668000D01*
+X305543Y667957D02*X305500Y668000D01*
+X286000D01*
+X286669Y648027D02*Y666831D01*
+X285500Y668000D01*
+X304669Y648027D02*Y666878D01*
+X305646Y667854D01*
+G54D36*X272900Y748600D02*X309800D01*
+X334700Y756800D02*X334500Y756600D01*
+Y743000D01*
+X340914D01*
+G54D40*X222678Y632554D02*X218054D01*
+X216500Y631000D01*
+Y626000D01*
+X219500Y623000D01*
+G54D41*X225984Y690551D02*Y681551D01*
+G54D40*X233189Y615500D02*X233237Y615547D01*
+X232500Y622500D02*Y625500D01*
+X235500Y628500D01*
+Y632500D01*
+X230000D01*
+X225000Y614500D02*X233189D01*
+X240322Y614047D02*X243925D01*
+G54D41*X244488Y690551D02*Y681051D01*
+G54D40*X195000Y767000D02*X199500Y762500D01*
+X195000Y767000D02*X198500D01*
+X195000Y765500D02*X199000D01*
+X194500Y765000D02*X199500Y760000D01*
+G54D36*X264700Y756800D02*X272900Y748600D01*
+G54D40*X244047Y614047D02*X245425D01*
+X253488Y605984D01*
+G54D36*X256000Y624500D02*X246000D01*
+G54D42*X209000Y648000D02*X232500D01*
+X215000Y644000D02*X222000D01*
+X209000Y641500D02*X212500D01*
+X215000Y644000D01*
+X209000Y648000D02*Y641500D01*
+Y642000D01*
+X213000Y646000D01*
+X159500Y604000D02*Y589000D01*
+X168000Y596000D02*X152000D01*
+G54D36*X274957Y599000D02*X270000D01*
+X282043D02*X288500D01*
+X289000Y598500D01*
+G54D40*X322500Y599000D02*X328500D01*
+X329500Y598000D01*
+G54D36*X270000Y599000D02*X267000Y602000D01*
+Y605390D01*
+X264500Y626000D02*Y621500D01*
+X265000Y621000D01*
+G54D40*X273500Y619000D02*Y613000D01*
+Y613500D01*
+X274049Y614049D01*
+X295543D01*
+X273500Y619000D02*X290593D01*
+X295543Y614049D01*
+G54D43*X295669Y624927D02*X288065Y617323D01*
+X273500D01*
+G54D44*X383858Y761811D03*
+G54D35*G36*
+X438361Y753246D02*Y747046D01*
+X444561D01*
+Y753246D01*
+X438361D01*
+G37*
+G54D45*X441461Y738335D03*
+Y726524D03*
+Y714713D03*
+Y702902D03*
+Y691091D03*
+Y679280D03*
+X429650Y750146D03*
+Y738335D03*
+Y726524D03*
+Y714713D03*
+Y702902D03*
+Y691091D03*
+Y679280D03*
+G54D44*X383858Y568898D03*
+G54D46*X267000Y605390D03*
+Y591610D03*
+X295949Y583768D03*
+Y569988D03*
+G54D47*X394736Y618866D03*
+G54D46*X407236Y648756D03*
+Y634976D03*
+G54D48*X436736Y621189D03*
+X464295D03*
+Y634969D03*
+X436736D03*
+G54D44*X155512Y761811D03*
+G54D35*G36*
+X171700Y759800D02*Y753800D01*
+X177700D01*
+Y759800D01*
+X171700D01*
+G37*
+G54D49*X174700Y766800D03*
+X184700Y756800D03*
+Y766800D03*
+G54D47*X188000Y732000D03*
+G54D46*X180535Y709276D03*
+X166756D03*
+G54D47*X164961Y732283D03*
+G54D44*X155512Y568898D03*
+G54D46*X219425Y605799D03*
+X205646D03*
+G54D47*X159500Y596000D03*
+X179500D03*
+G54D49*X194700Y756800D03*
+X204700D03*
+X214700D03*
+X194700Y766800D03*
+X204700D03*
+X214700D03*
+X224700Y756800D03*
+X234700D03*
+X244700D03*
+X254700D03*
+X224700Y766800D03*
+X234700D03*
+X244700D03*
+X254700D03*
+X264700Y756800D03*
+X274700D03*
+X284700D03*
+X264700Y766800D03*
+X274700D03*
+X284700D03*
+X294700D03*
+X304700D03*
+X314700D03*
+X294700Y756800D03*
+X304700D03*
+X314700D03*
+X324700D03*
+Y766800D03*
+X334700Y756800D03*
+X344700D03*
+X354700D03*
+X364700D03*
+X334700Y766800D03*
+X344700D03*
+X354700D03*
+X364700D03*
+G54D35*G36*
+X343473Y745952D02*X338355D01*
+Y740048D01*
+X343473D01*
+Y745952D01*
+G37*
+G36*
+X350559D02*X345441D01*
+Y740048D01*
+X350559D01*
+Y745952D01*
+G37*
+G36*
+X428686Y607616D02*X414186D01*
+Y589116D01*
+X428686D01*
+Y607616D01*
+G37*
+G36*
+X450486D02*X435986D01*
+Y589116D01*
+X450486D01*
+Y607616D01*
+G37*
+G36*
+X283669Y636677D02*Y613177D01*
+X307669D01*
+Y636677D01*
+X283669D01*
+G37*
+G36*
+X307419Y651777D02*X301919D01*
+Y644277D01*
+X307419D01*
+Y651777D01*
+G37*
+G36*
+X284602Y601952D02*X279484D01*
+Y596048D01*
+X284602D01*
+Y601952D01*
+G37*
+G36*
+X277516D02*X272398D01*
+Y596048D01*
+X277516D01*
+Y601952D01*
+G37*
+G36*
+X225236Y635506D02*X220118D01*
+Y629602D01*
+X225236D01*
+Y635506D01*
+G37*
+G36*
+X232322D02*X227204D01*
+Y629602D01*
+X232322D01*
+Y635506D01*
+G37*
+G36*
+X229183Y681181D02*X223683D01*
+Y673681D01*
+X229183D01*
+Y681181D01*
+G37*
+G36*
+X247183D02*X241683D01*
+Y673681D01*
+X247183D01*
+Y681181D01*
+G37*
+G36*
+X223433Y666081D02*Y642581D01*
+X247433D01*
+Y666081D01*
+X223433D01*
+G37*
+G36*
+X242882Y616999D02*X237764D01*
+Y611095D01*
+X242882D01*
+Y616999D01*
+G37*
+G36*
+X235796D02*X230678D01*
+Y611095D01*
+X235796D01*
+Y616999D01*
+G37*
+G36*
+X289419Y651777D02*X283919D01*
+Y644277D01*
+X289419D01*
+Y651777D01*
+G37*
+G36*
+X381286Y693760D02*Y688642D01*
+X387190D01*
+Y693760D01*
+X381286D01*
+G37*
+G36*
+X382467Y714626D02*Y709508D01*
+X388371D01*
+Y714626D01*
+X382467D01*
+G37*
+G36*
+X381286Y700846D02*Y695728D01*
+X387190D01*
+Y700846D01*
+X381286D01*
+G37*
+G36*
+X382467Y721712D02*Y716594D01*
+X388371D01*
+Y721712D01*
+X382467D01*
+G37*
+G36*
+X403347Y719882D02*Y714764D01*
+X409251D01*
+Y719882D01*
+X403347D01*
+G37*
+G36*
+Y726968D02*Y721850D01*
+X409251D01*
+Y726968D01*
+X403347D01*
+G37*
+G36*
+Y740748D02*Y735630D01*
+X409251D01*
+Y740748D01*
+X403347D01*
+G37*
+G36*
+Y747834D02*Y742716D01*
+X409251D01*
+Y747834D01*
+X403347D01*
+G37*
+G36*
+X381286Y735886D02*Y730768D01*
+X387190D01*
+Y735886D01*
+X381286D01*
+G37*
+G36*
+Y742972D02*Y737854D01*
+X387190D01*
+Y742972D01*
+X381286D01*
+G37*
+G54D49*X219500Y623000D03*
+X225072Y614428D03*
+G54D41*X246000Y624500D03*
+X256000D03*
+G54D49*X232500Y622500D03*
+X240000Y623000D03*
+X273500Y619000D03*
+Y613000D03*
+X295500Y598500D03*
+X302000D03*
+X289000D03*
+G54D41*X329500Y598000D03*
+X322500Y599000D03*
+G54D49*X305500Y668000D03*
+X292500D03*
+X299000D03*
+X285500D03*
+G54D41*X274000Y643000D03*
+X322500Y619500D03*
+X304500Y604000D03*
+X396236Y606366D03*
+X365000Y610000D03*
+X373000Y640000D03*
+X343000Y604000D03*
+X346000Y638500D03*
+G54D49*X208000Y693500D03*
+X209000Y676000D03*
+Y682000D03*
+X225984Y690551D03*
+X209000Y641500D03*
+X262500Y676000D03*
+Y682000D03*
+Y670000D03*
+Y664000D03*
+Y658000D03*
+X209000D03*
+Y647500D03*
+Y664000D03*
+Y670000D03*
+X297602Y729209D03*
+X309600Y734400D03*
+X305000Y728400D03*
+G54D41*X309800Y748600D03*
+X412598Y738976D03*
+Y744094D03*
+X416654Y723110D03*
+X391800Y702300D03*
+X396700Y704600D03*
+X414961Y718110D03*
+X391800Y743700D03*
+Y723300D03*
+X392000Y729000D03*
+X358500Y740000D03*
+X392000Y708200D03*
+X391900Y687200D03*
+G54D49*X192000Y747500D03*
+X186000Y743500D03*
+X174500D03*
+X180000Y747500D03*
+X169000D03*
+X244488Y690551D03*
+X244874Y724740D03*
+X270098Y698272D03*
+G54D50*G54D51*G54D50*G54D51*G54D50*G54D51*G54D50*G54D51*G54D50*G54D52*G54D53*G54D54*G54D53*G54D54*G54D53*G54D52*G54D55*G54D38*G54D55*G54D56*G54D52*G54D57*G54D38*G54D55*G54D38*G54D52*G54D55*G54D38*G54D57*M02*
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.bottommask.gbr b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.bottommask.gbr
new file mode 100644
index 0000000..dd9adaa
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.bottommask.gbr
@@ -0,0 +1,265 @@
+G04 start of page 9 for group -4062 idx -4062 *
+G04 Title: RspPiPS, soldermask *
+G04 Creator: pcb 4.2.0 *
+G04 CreationDate: Sun Jan 23 00:25:27 2022 UTC *
+G04 For: debian *
+G04 Format: Gerber/RS-274X *
+G04 PCB-Dimensions (mil): 10000.00 10000.00 *
+G04 PCB-Coordinate-Origin: lower left *
+%MOIN*%
+%FSLAX25Y25*%
+%LNBOTTOMMASK*%
+%ADD102C,0.0660*%
+%ADD101C,0.0846*%
+%ADD100C,0.0860*%
+%ADD99C,0.0787*%
+%ADD98C,0.1181*%
+%ADD97C,0.0720*%
+%ADD96C,0.0001*%
+%ADD95C,0.2461*%
+G54D95*X383858Y761811D03*
+G54D96*G36*
+X437861Y753746D02*Y746546D01*
+X445061D01*
+Y753746D01*
+X437861D01*
+G37*
+G54D97*X441461Y738335D03*
+Y726524D03*
+Y714713D03*
+Y702902D03*
+Y691091D03*
+Y679280D03*
+G54D98*X458469Y687783D03*
+G54D97*X429650Y750146D03*
+Y738335D03*
+G54D98*X458469Y741720D03*
+G54D97*X429650Y726524D03*
+Y714713D03*
+Y702902D03*
+Y691091D03*
+Y679280D03*
+G54D95*X383858Y568898D03*
+G54D99*X267000Y605390D03*
+Y591610D03*
+X295949Y583768D03*
+Y569988D03*
+G54D100*X394736Y618866D03*
+G54D99*X407236Y648756D03*
+Y634976D03*
+G54D101*X436736Y621189D03*
+X464295D03*
+Y634969D03*
+X436736D03*
+G54D95*X155512Y761811D03*
+G54D96*G36*
+X171400Y760100D02*Y753500D01*
+X178000D01*
+Y760100D01*
+X171400D01*
+G37*
+G54D102*X174700Y766800D03*
+X184700Y756800D03*
+Y766800D03*
+G54D100*X188000Y732000D03*
+G54D99*X180535Y709276D03*
+X166756D03*
+G54D100*X164961Y732283D03*
+G54D95*X155512Y568898D03*
+G54D99*X219425Y605799D03*
+X205646D03*
+G54D100*X159500Y596000D03*
+X179500D03*
+G54D102*X194700Y756800D03*
+X204700D03*
+X214700D03*
+X194700Y766800D03*
+X204700D03*
+X214700D03*
+X224700Y756800D03*
+X234700D03*
+X244700D03*
+X254700D03*
+X224700Y766800D03*
+X234700D03*
+X244700D03*
+X254700D03*
+X264700Y756800D03*
+X274700D03*
+X284700D03*
+X264700Y766800D03*
+X274700D03*
+X284700D03*
+X294700D03*
+X304700D03*
+X314700D03*
+X294700Y756800D03*
+X304700D03*
+X314700D03*
+X324700D03*
+Y766800D03*
+X334700Y756800D03*
+X344700D03*
+X354700D03*
+X364700D03*
+X334700Y766800D03*
+X344700D03*
+X354700D03*
+X364700D03*
+G54D96*G36*
+X343773Y746252D02*X338055D01*
+Y739748D01*
+X343773D01*
+Y746252D01*
+G37*
+G36*
+X350859D02*X345141D01*
+Y739748D01*
+X350859D01*
+Y746252D01*
+G37*
+G36*
+X428986Y607916D02*X413886D01*
+Y588816D01*
+X428986D01*
+Y607916D01*
+G37*
+G36*
+X450786D02*X435686D01*
+Y588816D01*
+X450786D01*
+Y607916D01*
+G37*
+G36*
+X284419Y635927D02*Y613927D01*
+X306919D01*
+Y635927D01*
+X284419D01*
+G37*
+G36*
+X307269Y651627D02*X302069D01*
+Y644427D01*
+X307269D01*
+Y651627D01*
+G37*
+G36*
+X284902Y602252D02*X279184D01*
+Y595748D01*
+X284902D01*
+Y602252D01*
+G37*
+G36*
+X277816D02*X272098D01*
+Y595748D01*
+X277816D01*
+Y602252D01*
+G37*
+G36*
+X225536Y635806D02*X219818D01*
+Y629302D01*
+X225536D01*
+Y635806D01*
+G37*
+G36*
+X232622D02*X226904D01*
+Y629302D01*
+X232622D01*
+Y635806D01*
+G37*
+G36*
+X229033Y681031D02*X223833D01*
+Y673831D01*
+X229033D01*
+Y681031D01*
+G37*
+G36*
+X247033D02*X241833D01*
+Y673831D01*
+X247033D01*
+Y681031D01*
+G37*
+G36*
+X224183Y665331D02*Y643331D01*
+X246683D01*
+Y665331D01*
+X224183D01*
+G37*
+G36*
+X243182Y617299D02*X237464D01*
+Y610795D01*
+X243182D01*
+Y617299D01*
+G37*
+G36*
+X236096D02*X230378D01*
+Y610795D01*
+X236096D01*
+Y617299D01*
+G37*
+G36*
+X289269Y651627D02*X284069D01*
+Y644427D01*
+X289269D01*
+Y651627D01*
+G37*
+G36*
+X380986Y694060D02*Y688342D01*
+X387490D01*
+Y694060D01*
+X380986D01*
+G37*
+G36*
+X382167Y714926D02*Y709208D01*
+X388671D01*
+Y714926D01*
+X382167D01*
+G37*
+G36*
+X380986Y701146D02*Y695428D01*
+X387490D01*
+Y701146D01*
+X380986D01*
+G37*
+G36*
+X382167Y722012D02*Y716294D01*
+X388671D01*
+Y722012D01*
+X382167D01*
+G37*
+G36*
+X403047Y720182D02*Y714464D01*
+X409551D01*
+Y720182D01*
+X403047D01*
+G37*
+G36*
+Y727268D02*Y721550D01*
+X409551D01*
+Y727268D01*
+X403047D01*
+G37*
+G36*
+Y741048D02*Y735330D01*
+X409551D01*
+Y741048D01*
+X403047D01*
+G37*
+G36*
+Y748134D02*Y742416D01*
+X409551D01*
+Y748134D01*
+X403047D01*
+G37*
+G36*
+X380986Y736186D02*Y730468D01*
+X387490D01*
+Y736186D01*
+X380986D01*
+G37*
+G36*
+Y743272D02*Y737554D01*
+X387490D01*
+Y743272D01*
+X380986D01*
+G37*
+M02*
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.bottompaste.gbr b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.bottompaste.gbr
new file mode 100644
index 0000000..48c0098
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.bottompaste.gbr
@@ -0,0 +1,169 @@
+G04 start of page 13 for group -4014 idx -4014 *
+G04 Title: RspPiPS, bottompaste *
+G04 Creator: pcb 4.2.0 *
+G04 CreationDate: Sun Jan 23 00:25:27 2022 UTC *
+G04 For: debian *
+G04 Format: Gerber/RS-274X *
+G04 PCB-Dimensions (mil): 10000.00 10000.00 *
+G04 PCB-Coordinate-Origin: lower left *
+%MOIN*%
+%FSLAX25Y25*%
+%LNBOTTOMPASTE*%
+%ADD111C,0.0001*%
+G54D111*G36*
+X225236Y635506D02*X220118D01*
+Y629602D01*
+X225236D01*
+Y635506D01*
+G37*
+G36*
+X232322D02*X227204D01*
+Y629602D01*
+X232322D01*
+Y635506D01*
+G37*
+G36*
+X242882Y616999D02*X237764D01*
+Y611095D01*
+X242882D01*
+Y616999D01*
+G37*
+G36*
+X235796D02*X230678D01*
+Y611095D01*
+X235796D01*
+Y616999D01*
+G37*
+G36*
+X284602Y601952D02*X279484D01*
+Y596048D01*
+X284602D01*
+Y601952D01*
+G37*
+G36*
+X277516D02*X272398D01*
+Y596048D01*
+X277516D01*
+Y601952D01*
+G37*
+G36*
+X229033Y681031D02*X223833D01*
+Y673831D01*
+X229033D01*
+Y681031D01*
+G37*
+G36*
+X247033D02*X241833D01*
+Y673831D01*
+X247033D01*
+Y681031D01*
+G37*
+G36*
+X224183Y665331D02*Y643331D01*
+X246683D01*
+Y665331D01*
+X224183D01*
+G37*
+G36*
+X289269Y651627D02*X284069D01*
+Y644427D01*
+X289269D01*
+Y651627D01*
+G37*
+G36*
+X307269D02*X302069D01*
+Y644427D01*
+X307269D01*
+Y651627D01*
+G37*
+G36*
+X284419Y635927D02*Y613927D01*
+X306919D01*
+Y635927D01*
+X284419D01*
+G37*
+G36*
+X381286Y735886D02*Y730768D01*
+X387190D01*
+Y735886D01*
+X381286D01*
+G37*
+G36*
+Y742972D02*Y737854D01*
+X387190D01*
+Y742972D01*
+X381286D01*
+G37*
+G36*
+X382467Y714626D02*Y709508D01*
+X388371D01*
+Y714626D01*
+X382467D01*
+G37*
+G36*
+Y721712D02*Y716594D01*
+X388371D01*
+Y721712D01*
+X382467D01*
+G37*
+G36*
+X381286Y693760D02*Y688642D01*
+X387190D01*
+Y693760D01*
+X381286D01*
+G37*
+G36*
+Y700846D02*Y695728D01*
+X387190D01*
+Y700846D01*
+X381286D01*
+G37*
+G36*
+X403347Y740748D02*Y735630D01*
+X409251D01*
+Y740748D01*
+X403347D01*
+G37*
+G36*
+Y747834D02*Y742716D01*
+X409251D01*
+Y747834D01*
+X403347D01*
+G37*
+G36*
+Y719882D02*Y714764D01*
+X409251D01*
+Y719882D01*
+X403347D01*
+G37*
+G36*
+Y726968D02*Y721850D01*
+X409251D01*
+Y726968D01*
+X403347D01*
+G37*
+G36*
+X428686Y607616D02*X414186D01*
+Y589116D01*
+X428686D01*
+Y607616D01*
+G37*
+G36*
+X450486D02*X435986D01*
+Y589116D01*
+X450486D01*
+Y607616D01*
+G37*
+G36*
+X343473Y745952D02*X338355D01*
+Y740048D01*
+X343473D01*
+Y745952D01*
+G37*
+G36*
+X350559D02*X345441D01*
+Y740048D01*
+X350559D01*
+Y745952D01*
+G37*
+M02*
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.bottomsilk.gbr b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.bottomsilk.gbr
new file mode 100644
index 0000000..64cb574
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.bottomsilk.gbr
@@ -0,0 +1,367 @@
+G04 start of page 11 for group -4078 idx -4078 *
+G04 Title: RspPiPS, bottomsilk *
+G04 Creator: pcb 4.2.0 *
+G04 CreationDate: Sun Jan 23 00:25:27 2022 UTC *
+G04 For: debian *
+G04 Format: Gerber/RS-274X *
+G04 PCB-Dimensions (mil): 10000.00 10000.00 *
+G04 PCB-Coordinate-Origin: lower left *
+%MOIN*%
+%FSLAX25Y25*%
+%LNBOTTOMSILK*%
+%ADD109C,0.0100*%
+%ADD108C,0.0200*%
+%ADD107C,0.0080*%
+G54D107*X423100Y633400D02*X424400D01*
+X425100Y634100D02*X424400Y633400D01*
+X425100Y634100D02*Y636700D01*
+X424400Y637400D01*
+X423100D02*X424400D01*
+X421900Y633900D02*Y636900D01*
+X421400Y637400D01*
+X420400D02*X421400D01*
+X420400D02*X419900Y636900D01*
+Y633900D02*Y636900D01*
+X420400Y633400D02*X419900Y633900D01*
+X420400Y633400D02*X421400D01*
+X421900Y633900D02*X421400Y633400D01*
+X418700D02*Y637400D01*
+X417200Y635400D01*
+X415700Y637400D01*
+Y633400D02*Y637400D01*
+X426700Y622000D02*X425700Y618000D01*
+X424700Y622000D01*
+X421500Y618000D02*X423500D01*
+X419300Y622000D02*X420300D01*
+X419800Y618000D02*Y622000D01*
+X419300Y618000D02*X420300D01*
+X418100D02*Y622000D01*
+X415600Y618000D01*
+Y622000D01*
+X344064Y740245D02*X344850D01*
+X344064Y745755D02*X344850D01*
+G54D108*X410636Y589166D02*Y607566D01*
+G54D109*X417836Y610166D01*
+X453036D01*
+Y586566D02*Y610166D01*
+X417836Y586566D02*X453036D01*
+X417836D02*X410636Y589166D01*
+G54D107*X278107Y601755D02*X278893D01*
+X278107Y596245D02*X278893D01*
+X225827Y629799D02*X226613D01*
+X225827Y635309D02*X226613D01*
+X236387Y616802D02*X237173D01*
+X236387Y611292D02*X237173D01*
+G54D109*X249433Y682681D02*Y641081D01*
+X221433D01*
+Y682681D01*
+X249433D01*
+X309669Y653277D02*Y611677D01*
+X281669D01*
+Y653277D01*
+X309669D01*
+G54D107*X386993Y737263D02*Y736477D01*
+X381483Y737263D02*Y736477D01*
+X388174Y716003D02*Y715217D01*
+X382664Y716003D02*Y715217D01*
+X409054Y742125D02*Y741339D01*
+X403544Y742125D02*Y741339D01*
+X386993Y695137D02*Y694351D01*
+X381483Y695137D02*Y694351D01*
+X409054Y721259D02*Y720473D01*
+X403544Y721259D02*Y720473D01*
+X374488Y731420D02*Y732720D01*
+X375188Y730720D02*X374488Y731420D01*
+X375188Y730720D02*X377788D01*
+X378488Y731420D01*
+Y732720D01*
+X375988Y733920D02*X378488Y735920D01*
+X375988Y733920D02*Y736420D01*
+X374488Y735920D02*X378488D01*
+X374988Y737620D02*X374488Y738120D01*
+X374988Y737620D02*X377988D01*
+X378488Y738120D01*
+Y739120D01*
+X377988Y739620D01*
+X374988D02*X377988D01*
+X374488Y739120D02*X374988Y739620D01*
+X374488Y738120D02*Y739120D01*
+X375488Y737620D02*X377488Y739620D01*
+X377988Y740820D02*X378488Y741320D01*
+Y742820D01*
+X377988Y743320D01*
+X376988D02*X377988D01*
+X374488Y740820D02*X376988Y743320D01*
+X374488Y740820D02*Y743320D01*
+X375569Y710260D02*Y711560D01*
+X376269Y709560D02*X375569Y710260D01*
+X376269Y709560D02*X378869D01*
+X379569Y710260D01*
+Y711560D01*
+X377069Y712760D02*X379569Y714760D01*
+X377069Y712760D02*Y715260D01*
+X375569Y714760D02*X379569D01*
+X376069Y716460D02*X375569Y716960D01*
+X376069Y716460D02*X379069D01*
+X379569Y716960D01*
+Y717960D01*
+X379069Y718460D01*
+X376069D02*X379069D01*
+X375569Y717960D02*X376069Y718460D01*
+X375569Y716960D02*Y717960D01*
+X376569Y716460D02*X378569Y718460D01*
+X378769Y719660D02*X379569Y720460D01*
+X375569D02*X379569D01*
+X375569Y719660D02*Y721160D01*
+X400649Y735482D02*Y737482D01*
+X400149Y737982D01*
+X399149D02*X400149D01*
+X398649Y737482D02*X399149Y737982D01*
+X398649Y735982D02*Y737482D01*
+X396649Y735982D02*X400649D01*
+X398649Y736782D02*X396649Y737982D01*
+X398149Y739182D02*X400649Y741182D01*
+X398149Y739182D02*Y741682D01*
+X396649Y741182D02*X400649D01*
+X397149Y742882D02*X396649Y743382D01*
+X397149Y742882D02*X400149D01*
+X400649Y743382D01*
+Y744382D01*
+X400149Y744882D01*
+X397149D02*X400149D01*
+X396649Y744382D02*X397149Y744882D01*
+X396649Y743382D02*Y744382D01*
+X397649Y742882D02*X399649Y744882D01*
+X399849Y746082D02*X400649Y746882D01*
+X396649D02*X400649D01*
+X396649Y746082D02*Y747582D01*
+X400249Y715016D02*Y717016D01*
+X399749Y717516D01*
+X398749D02*X399749D01*
+X398249Y717016D02*X398749Y717516D01*
+X398249Y715516D02*Y717016D01*
+X396249Y715516D02*X400249D01*
+X398249Y716316D02*X396249Y717516D01*
+X397749Y718716D02*X400249Y720716D01*
+X397749Y718716D02*Y721216D01*
+X396249Y720716D02*X400249D01*
+X396749Y722416D02*X396249Y722916D01*
+X396749Y722416D02*X399749D01*
+X400249Y722916D01*
+Y723916D01*
+X399749Y724416D01*
+X396749D02*X399749D01*
+X396249Y723916D02*X396749Y724416D01*
+X396249Y722916D02*Y723916D01*
+X397249Y722416D02*X399249Y724416D01*
+X399749Y725616D02*X400249Y726116D01*
+Y727616D01*
+X399749Y728116D01*
+X398749D02*X399749D01*
+X396249Y725616D02*X398749Y728116D01*
+X396249Y725616D02*Y728116D01*
+X390588Y686794D02*Y688094D01*
+X391288Y686094D02*X390588Y686794D01*
+X391288Y686094D02*X393888D01*
+X394588Y686794D01*
+Y688094D01*
+X392088Y689294D02*X394588Y691294D01*
+X392088Y689294D02*Y691794D01*
+X390588Y691294D02*X394588D01*
+X391088Y692994D02*X390588Y693494D01*
+X391088Y692994D02*X394088D01*
+X394588Y693494D01*
+Y694494D01*
+X394088Y694994D01*
+X391088D02*X394088D01*
+X390588Y694494D02*X391088Y694994D01*
+X390588Y693494D02*Y694494D01*
+X391588Y692994D02*X393588Y694994D01*
+X394088Y696194D02*X394588Y696694D01*
+Y697694D01*
+X394088Y698194D01*
+X390588Y697694D02*X391088Y698194D01*
+X390588Y696694D02*Y697694D01*
+X391088Y696194D02*X390588Y696694D01*
+X392788D02*Y697694D01*
+X393288Y698194D02*X394088D01*
+X391088D02*X392288D01*
+X392788Y697694D01*
+X393288Y698194D02*X392788Y697694D01*
+X437736Y579666D02*Y583666D01*
+X436436D02*X435736Y582966D01*
+Y580366D02*Y582966D01*
+X436436Y579666D02*X435736Y580366D01*
+X436436Y579666D02*X438236D01*
+X436436Y583666D02*X438236D01*
+X434536Y582866D02*X433736Y583666D01*
+Y579666D02*Y583666D01*
+X433036Y579666D02*X434536D01*
+X431836Y580166D02*X431336Y579666D01*
+X431836Y580166D02*Y583166D01*
+X431336Y583666D01*
+X430336D02*X431336D01*
+X430336D02*X429836Y583166D01*
+Y580166D02*Y583166D01*
+X430336Y579666D02*X429836Y580166D01*
+X430336Y579666D02*X431336D01*
+X431836Y580666D02*X429836Y582666D01*
+X428636Y580166D02*X428136Y579666D01*
+X428636Y580166D02*Y583166D01*
+X428136Y583666D01*
+X427136D02*X428136D01*
+X427136D02*X426636Y583166D01*
+Y580166D02*Y583166D01*
+X427136Y579666D02*X426636Y580166D01*
+X427136Y579666D02*X428136D01*
+X428636Y580666D02*X426636Y582666D01*
+X212930Y630596D02*X214230D01*
+X214930Y631296D02*X214230Y630596D01*
+X214930Y631296D02*Y633896D01*
+X214230Y634596D01*
+X212930D02*X214230D01*
+X211730Y634096D02*X211230Y634596D01*
+X209730D02*X211230D01*
+X209730D02*X209230Y634096D01*
+Y633096D02*Y634096D01*
+X211730Y630596D02*X209230Y633096D01*
+Y630596D02*X211730D01*
+X208030Y631096D02*X207530Y630596D01*
+X208030Y631096D02*Y634096D01*
+X207530Y634596D01*
+X206530D02*X207530D01*
+X206530D02*X206030Y634096D01*
+Y631096D02*Y634096D01*
+X206530Y630596D02*X206030Y631096D01*
+X206530Y630596D02*X207530D01*
+X208030Y631596D02*X206030Y633596D01*
+X204830Y634096D02*X204330Y634596D01*
+X202830D02*X204330D01*
+X202830D02*X202330Y634096D01*
+Y633096D02*Y634096D01*
+X204830Y630596D02*X202330Y633096D01*
+Y630596D02*X204830D01*
+X239930Y604197D02*X241230D01*
+X241930Y604897D02*X241230Y604197D01*
+X241930Y604897D02*Y607497D01*
+X241230Y608197D01*
+X239930D02*X241230D01*
+X238730Y607697D02*X238230Y608197D01*
+X236730D02*X238230D01*
+X236730D02*X236230Y607697D01*
+Y606697D02*Y607697D01*
+X238730Y604197D02*X236230Y606697D01*
+Y604197D02*X238730D01*
+X235030Y604697D02*X234530Y604197D01*
+X235030Y604697D02*Y607697D01*
+X234530Y608197D01*
+X233530D02*X234530D01*
+X233530D02*X233030Y607697D01*
+Y604697D02*Y607697D01*
+X233530Y604197D02*X233030Y604697D01*
+X233530Y604197D02*X234530D01*
+X235030Y605197D02*X233030Y607197D01*
+X231830Y607397D02*X231030Y608197D01*
+Y604197D02*Y608197D01*
+X230330Y604197D02*X231830D01*
+X283150Y589150D02*X284450D01*
+X285150Y589850D02*X284450Y589150D01*
+X285150Y589850D02*Y592450D01*
+X284450Y593150D01*
+X283150D02*X284450D01*
+X281950Y592350D02*X281150Y593150D01*
+Y589150D02*Y593150D01*
+X280450Y589150D02*X281950D01*
+X279250Y589650D02*X278750Y589150D01*
+X279250Y589650D02*Y592650D01*
+X278750Y593150D01*
+X277750D02*X278750D01*
+X277750D02*X277250Y592650D01*
+Y589650D02*Y592650D01*
+X277750Y589150D02*X277250Y589650D01*
+X277750Y589150D02*X278750D01*
+X279250Y590150D02*X277250Y592150D01*
+X275550Y589150D02*X273550Y593150D01*
+X276050D01*
+X312227Y637331D02*X316227D01*
+X312227Y636031D02*X312927Y635331D01*
+X315527D01*
+X316227Y636031D02*X315527Y635331D01*
+X316227Y636031D02*Y637831D01*
+X312227Y636031D02*Y637831D01*
+X313027Y634131D02*X312227Y633331D01*
+X316227D01*
+Y632631D02*Y634131D01*
+X315727Y631431D02*X316227Y630931D01*
+X312727Y631431D02*X315727D01*
+X312727D02*X312227Y630931D01*
+Y629931D02*Y630931D01*
+Y629931D02*X312727Y629431D01*
+X315727D01*
+X316227Y629931D02*X315727Y629431D01*
+X316227Y629931D02*Y630931D01*
+X315227Y631431D02*X313227Y629431D01*
+X312727Y628231D02*X312227Y627731D01*
+Y626731D02*Y627731D01*
+Y626731D02*X312727Y626231D01*
+X316227Y626731D02*X315727Y626231D01*
+X316227Y626731D02*Y627731D01*
+X315727Y628231D02*X316227Y627731D01*
+X314027Y626731D02*Y627731D01*
+X312727Y626231D02*X313527D01*
+X314527D02*X315727D01*
+X314527D02*X314027Y626731D01*
+X313527Y626231D02*X314027Y626731D01*
+X251931Y669467D02*X255931D01*
+X251931Y668167D02*X252631Y667467D01*
+X255231D01*
+X255931Y668167D02*X255231Y667467D01*
+X255931Y668167D02*Y669967D01*
+X251931Y668167D02*Y669967D01*
+X252431Y666267D02*X251931Y665767D01*
+Y664267D02*Y665767D01*
+Y664267D02*X252431Y663767D01*
+X253431D01*
+X255931Y666267D02*X253431Y663767D01*
+X255931D02*Y666267D01*
+X255431Y662567D02*X255931Y662067D01*
+X252431Y662567D02*X255431D01*
+X252431D02*X251931Y662067D01*
+Y661067D02*Y662067D01*
+Y661067D02*X252431Y660567D01*
+X255431D01*
+X255931Y661067D02*X255431Y660567D01*
+X255931Y661067D02*Y662067D01*
+X254931Y662567D02*X252931Y660567D01*
+X252731Y659367D02*X251931Y658567D01*
+X255931D01*
+Y657867D02*Y659367D01*
+X339150Y747750D02*X341150D01*
+X341650Y748250D01*
+Y749250D01*
+X341150Y749750D02*X341650Y749250D01*
+X339650Y749750D02*X341150D01*
+X339650Y747750D02*Y751750D01*
+X340450Y749750D02*X341650Y751750D01*
+X342850Y748250D02*X343350Y747750D01*
+X344850D01*
+X345350Y748250D01*
+Y749250D01*
+X342850Y751750D02*X345350Y749250D01*
+X342850Y751750D02*X345350D01*
+X346550Y751250D02*X347050Y751750D01*
+X346550Y748250D02*Y751250D01*
+Y748250D02*X347050Y747750D01*
+X348050D01*
+X348550Y748250D01*
+Y751250D01*
+X348050Y751750D02*X348550Y751250D01*
+X347050Y751750D02*X348050D01*
+X346550Y750750D02*X348550Y748750D01*
+X349750Y748250D02*X350250Y747750D01*
+X351750D01*
+X352250Y748250D01*
+Y749250D01*
+X349750Y751750D02*X352250Y749250D01*
+X349750Y751750D02*X352250D01*
+M02*
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.fab.gbr b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.fab.gbr
new file mode 100644
index 0000000..f086c68
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.fab.gbr
@@ -0,0 +1,2133 @@
+G04 start of page 14 for group -3984 idx -3984 *
+G04 Title: RspPiPS, fab *
+G04 Creator: pcb 4.2.0 *
+G04 CreationDate: Sun Jan 23 00:25:27 2022 UTC *
+G04 For: debian *
+G04 Format: Gerber/RS-274X *
+G04 PCB-Dimensions (mil): 10000.00 10000.00 *
+G04 PCB-Coordinate-Origin: lower left *
+%MOIN*%
+%FSLAX25Y25*%
+%LNFAB*%
+%ADD115C,0.0100*%
+%ADD114C,0.0075*%
+%ADD113C,0.0060*%
+%ADD112R,0.0080X0.0080*%
+G54D112*X457669Y741720D02*G75*G03X459269Y741720I800J0D01*G01*
+G75*G03X457669Y741720I-800J0D01*G01*
+X456069D02*G75*G03X460869Y741720I2400J0D01*G01*
+G75*G03X456069Y741720I-2400J0D01*G01*
+X457669Y687783D02*G75*G03X459269Y687783I800J0D01*G01*
+G75*G03X457669Y687783I-800J0D01*G01*
+X456069D02*G75*G03X460869Y687783I2400J0D01*G01*
+G75*G03X456069Y687783I-2400J0D01*G01*
+X14200Y1011250D02*G75*G03X15800Y1011250I800J0D01*G01*
+G75*G03X14200Y1011250I-800J0D01*G01*
+X12600D02*G75*G03X17400Y1011250I2400J0D01*G01*
+G75*G03X12600Y1011250I-2400J0D01*G01*
+G54D113*X140000Y1013500D02*Y1007500D01*
+Y1013500D02*X143750Y1007500D01*
+Y1013500D02*Y1007500D01*
+X145550Y1012750D02*Y1008250D01*
+Y1012750D02*X146300Y1013500D01*
+X147800D01*
+X148550Y1012750D01*
+Y1008250D01*
+X147800Y1007500D02*X148550Y1008250D01*
+X146300Y1007500D02*X147800D01*
+X145550Y1008250D02*X146300Y1007500D01*
+X98000Y1012750D02*X98750Y1013500D01*
+X101000D01*
+X101750Y1012750D01*
+Y1011250D01*
+X98000Y1007500D02*X101750Y1011250D01*
+X98000Y1007500D02*X101750D01*
+X45000Y1008250D02*X45750Y1007500D01*
+X45000Y1012750D02*Y1008250D01*
+Y1012750D02*X45750Y1013500D01*
+X47250D01*
+X48000Y1012750D01*
+Y1008250D01*
+X47250Y1007500D02*X48000Y1008250D01*
+X45750Y1007500D02*X47250D01*
+X45000Y1009000D02*X48000Y1012000D01*
+X49800Y1007500D02*X50550D01*
+X52350Y1012300D02*X53550Y1013500D01*
+Y1007500D01*
+X52350D02*X54600D01*
+X56400Y1012300D02*X57600Y1013500D01*
+Y1007500D01*
+X56400D02*X58650D01*
+X60450Y1008250D02*X61200Y1007500D01*
+X60450Y1009450D02*Y1008250D01*
+Y1009450D02*X61500Y1010500D01*
+X62400D01*
+X63450Y1009450D01*
+Y1008250D01*
+X62700Y1007500D02*X63450Y1008250D01*
+X61200Y1007500D02*X62700D01*
+X60450Y1011550D02*X61500Y1010500D01*
+X60450Y1012750D02*Y1011550D01*
+Y1012750D02*X61200Y1013500D01*
+X62700D01*
+X63450Y1012750D01*
+Y1011550D01*
+X62400Y1010500D02*X63450Y1011550D01*
+X381458Y764211D02*X386258Y759411D01*
+X381458D02*X386258Y764211D01*
+X382258Y763411D02*X385458D01*
+X382258D02*Y760211D01*
+X385458D01*
+Y763411D02*Y760211D01*
+X381458Y571298D02*X386258Y566498D01*
+X381458D02*X386258Y571298D01*
+X382258Y570498D02*X385458D01*
+X382258D02*Y567298D01*
+X385458D01*
+Y570498D02*Y567298D01*
+X153112Y764211D02*X157912Y759411D01*
+X153112D02*X157912Y764211D01*
+X153912Y763411D02*X157112D01*
+X153912D02*Y760211D01*
+X157112D01*
+Y763411D02*Y760211D01*
+X153112Y571298D02*X157912Y566498D01*
+X153112D02*X157912Y571298D01*
+X153912Y570498D02*X157112D01*
+X153912D02*Y567298D01*
+X157112D01*
+Y570498D02*Y567298D01*
+X12600Y1028650D02*X17400Y1023850D01*
+X12600D02*X17400Y1028650D01*
+X13400Y1027850D02*X16600D01*
+X13400D02*Y1024650D01*
+X16600D01*
+Y1027850D02*Y1024650D01*
+X135000Y1028500D02*X136500Y1025500D01*
+X138000Y1028500D01*
+X136500Y1025500D02*Y1022500D01*
+X139800Y1025800D02*X142050D01*
+X139800Y1022500D02*X142800D01*
+X139800Y1028500D02*Y1022500D01*
+Y1028500D02*X142800D01*
+X147600D02*X148350Y1027750D01*
+X145350Y1028500D02*X147600D01*
+X144600Y1027750D02*X145350Y1028500D01*
+X144600Y1027750D02*Y1026250D01*
+X145350Y1025500D01*
+X147600D01*
+X148350Y1024750D01*
+Y1023250D01*
+X147600Y1022500D02*X148350Y1023250D01*
+X145350Y1022500D02*X147600D01*
+X144600Y1023250D02*X145350Y1022500D01*
+X98000Y1024750D02*X101000Y1028500D01*
+X98000Y1024750D02*X101750D01*
+X101000Y1028500D02*Y1022500D01*
+X45000Y1023250D02*X45750Y1022500D01*
+X45000Y1027750D02*Y1023250D01*
+Y1027750D02*X45750Y1028500D01*
+X47250D01*
+X48000Y1027750D01*
+Y1023250D01*
+X47250Y1022500D02*X48000Y1023250D01*
+X45750Y1022500D02*X47250D01*
+X45000Y1024000D02*X48000Y1027000D01*
+X49800Y1022500D02*X50550D01*
+X52350Y1027300D02*X53550Y1028500D01*
+Y1022500D01*
+X52350D02*X54600D01*
+X56400Y1023250D02*X57150Y1022500D01*
+X56400Y1027750D02*Y1023250D01*
+Y1027750D02*X57150Y1028500D01*
+X58650D01*
+X59400Y1027750D01*
+Y1023250D01*
+X58650Y1022500D02*X59400Y1023250D01*
+X57150Y1022500D02*X58650D01*
+X56400Y1024000D02*X59400Y1027000D01*
+X63450Y1028500D02*X64200Y1027750D01*
+X61950Y1028500D02*X63450D01*
+X61200Y1027750D02*X61950Y1028500D01*
+X61200Y1027750D02*Y1023250D01*
+X61950Y1022500D01*
+X63450Y1025800D02*X64200Y1025050D01*
+X61200Y1025800D02*X63450D01*
+X61950Y1022500D02*X63450D01*
+X64200Y1023250D01*
+Y1025050D02*Y1023250D01*
+X436736Y624389D02*Y617989D01*
+X433536Y621189D02*X439936D01*
+X435136Y622789D02*X438336D01*
+X435136D02*Y619589D01*
+X438336D01*
+Y622789D02*Y619589D01*
+X464295Y624389D02*Y617989D01*
+X461095Y621189D02*X467495D01*
+X462695Y622789D02*X465895D01*
+X462695D02*Y619589D01*
+X465895D01*
+Y622789D02*Y619589D01*
+X436736Y638169D02*Y631769D01*
+X433536Y634969D02*X439936D01*
+X435136Y636569D02*X438336D01*
+X435136D02*Y633369D01*
+X438336D01*
+Y636569D02*Y633369D01*
+X464295Y638169D02*Y631769D01*
+X461095Y634969D02*X467495D01*
+X462695Y636569D02*X465895D01*
+X462695D02*Y633369D01*
+X465895D01*
+Y636569D02*Y633369D01*
+X15000Y1044450D02*Y1038050D01*
+X11800Y1041250D02*X18200D01*
+X13400Y1042850D02*X16600D01*
+X13400D02*Y1039650D01*
+X16600D01*
+Y1042850D02*Y1039650D01*
+X135000Y1043500D02*X136500Y1040500D01*
+X138000Y1043500D01*
+X136500Y1040500D02*Y1037500D01*
+X139800Y1040800D02*X142050D01*
+X139800Y1037500D02*X142800D01*
+X139800Y1043500D02*Y1037500D01*
+Y1043500D02*X142800D01*
+X147600D02*X148350Y1042750D01*
+X145350Y1043500D02*X147600D01*
+X144600Y1042750D02*X145350Y1043500D01*
+X144600Y1042750D02*Y1041250D01*
+X145350Y1040500D01*
+X147600D01*
+X148350Y1039750D01*
+Y1038250D01*
+X147600Y1037500D02*X148350Y1038250D01*
+X145350Y1037500D02*X147600D01*
+X144600Y1038250D02*X145350Y1037500D01*
+X98000Y1039750D02*X101000Y1043500D01*
+X98000Y1039750D02*X101750D01*
+X101000Y1043500D02*Y1037500D01*
+X45000Y1038250D02*X45750Y1037500D01*
+X45000Y1042750D02*Y1038250D01*
+Y1042750D02*X45750Y1043500D01*
+X47250D01*
+X48000Y1042750D01*
+Y1038250D01*
+X47250Y1037500D02*X48000Y1038250D01*
+X45750Y1037500D02*X47250D01*
+X45000Y1039000D02*X48000Y1042000D01*
+X49800Y1037500D02*X50550D01*
+X52350Y1038250D02*X53100Y1037500D01*
+X52350Y1042750D02*Y1038250D01*
+Y1042750D02*X53100Y1043500D01*
+X54600D01*
+X55350Y1042750D01*
+Y1038250D01*
+X54600Y1037500D02*X55350Y1038250D01*
+X53100Y1037500D02*X54600D01*
+X52350Y1039000D02*X55350Y1042000D01*
+X57150Y1039750D02*X60150Y1043500D01*
+X57150Y1039750D02*X60900D01*
+X60150Y1043500D02*Y1037500D01*
+X62700Y1043500D02*X65700D01*
+X62700D02*Y1040500D01*
+X63450Y1041250D01*
+X64950D01*
+X65700Y1040500D01*
+Y1038250D01*
+X64950Y1037500D02*X65700Y1038250D01*
+X63450Y1037500D02*X64950D01*
+X62700Y1038250D02*X63450Y1037500D01*
+X441461Y750146D02*Y746946D01*
+Y750146D02*X444234Y751746D01*
+X441461Y750146D02*X438687Y751746D01*
+X439861Y750146D02*G75*G03X443061Y750146I1600J0D01*G01*
+G75*G03X439861Y750146I-1600J0D01*G01*
+X441461Y738335D02*Y735135D01*
+Y738335D02*X444234Y739935D01*
+X441461Y738335D02*X438687Y739935D01*
+X439861Y738335D02*G75*G03X443061Y738335I1600J0D01*G01*
+G75*G03X439861Y738335I-1600J0D01*G01*
+X441461Y726524D02*Y723324D01*
+Y726524D02*X444234Y728124D01*
+X441461Y726524D02*X438687Y728124D01*
+X439861Y726524D02*G75*G03X443061Y726524I1600J0D01*G01*
+G75*G03X439861Y726524I-1600J0D01*G01*
+X441461Y714713D02*Y711513D01*
+Y714713D02*X444234Y716313D01*
+X441461Y714713D02*X438687Y716313D01*
+X439861Y714713D02*G75*G03X443061Y714713I1600J0D01*G01*
+G75*G03X439861Y714713I-1600J0D01*G01*
+X441461Y702902D02*Y699702D01*
+Y702902D02*X444234Y704502D01*
+X441461Y702902D02*X438687Y704502D01*
+X439861Y702902D02*G75*G03X443061Y702902I1600J0D01*G01*
+G75*G03X439861Y702902I-1600J0D01*G01*
+X441461Y691091D02*Y687891D01*
+Y691091D02*X444234Y692691D01*
+X441461Y691091D02*X438687Y692691D01*
+X439861Y691091D02*G75*G03X443061Y691091I1600J0D01*G01*
+G75*G03X439861Y691091I-1600J0D01*G01*
+X441461Y679280D02*Y676080D01*
+Y679280D02*X444234Y680880D01*
+X441461Y679280D02*X438687Y680880D01*
+X439861Y679280D02*G75*G03X443061Y679280I1600J0D01*G01*
+G75*G03X439861Y679280I-1600J0D01*G01*
+X429650Y750146D02*Y746946D01*
+Y750146D02*X432423Y751746D01*
+X429650Y750146D02*X426876Y751746D01*
+X428050Y750146D02*G75*G03X431250Y750146I1600J0D01*G01*
+G75*G03X428050Y750146I-1600J0D01*G01*
+X429650Y738335D02*Y735135D01*
+Y738335D02*X432423Y739935D01*
+X429650Y738335D02*X426876Y739935D01*
+X428050Y738335D02*G75*G03X431250Y738335I1600J0D01*G01*
+G75*G03X428050Y738335I-1600J0D01*G01*
+X429650Y726524D02*Y723324D01*
+Y726524D02*X432423Y728124D01*
+X429650Y726524D02*X426876Y728124D01*
+X428050Y726524D02*G75*G03X431250Y726524I1600J0D01*G01*
+G75*G03X428050Y726524I-1600J0D01*G01*
+X429650Y714713D02*Y711513D01*
+Y714713D02*X432423Y716313D01*
+X429650Y714713D02*X426876Y716313D01*
+X428050Y714713D02*G75*G03X431250Y714713I1600J0D01*G01*
+G75*G03X428050Y714713I-1600J0D01*G01*
+X429650Y702902D02*Y699702D01*
+Y702902D02*X432423Y704502D01*
+X429650Y702902D02*X426876Y704502D01*
+X428050Y702902D02*G75*G03X431250Y702902I1600J0D01*G01*
+G75*G03X428050Y702902I-1600J0D01*G01*
+X429650Y691091D02*Y687891D01*
+Y691091D02*X432423Y692691D01*
+X429650Y691091D02*X426876Y692691D01*
+X428050Y691091D02*G75*G03X431250Y691091I1600J0D01*G01*
+G75*G03X428050Y691091I-1600J0D01*G01*
+X429650Y679280D02*Y676080D01*
+Y679280D02*X432423Y680880D01*
+X429650Y679280D02*X426876Y680880D01*
+X428050Y679280D02*G75*G03X431250Y679280I1600J0D01*G01*
+G75*G03X428050Y679280I-1600J0D01*G01*
+X15000Y1056250D02*Y1053050D01*
+Y1056250D02*X17773Y1057850D01*
+X15000Y1056250D02*X12227Y1057850D01*
+X13400Y1056250D02*G75*G03X16600Y1056250I1600J0D01*G01*
+G75*G03X13400Y1056250I-1600J0D01*G01*
+X135000Y1058500D02*X136500Y1055500D01*
+X138000Y1058500D01*
+X136500Y1055500D02*Y1052500D01*
+X139800Y1055800D02*X142050D01*
+X139800Y1052500D02*X142800D01*
+X139800Y1058500D02*Y1052500D01*
+Y1058500D02*X142800D01*
+X147600D02*X148350Y1057750D01*
+X145350Y1058500D02*X147600D01*
+X144600Y1057750D02*X145350Y1058500D01*
+X144600Y1057750D02*Y1056250D01*
+X145350Y1055500D01*
+X147600D01*
+X148350Y1054750D01*
+Y1053250D01*
+X147600Y1052500D02*X148350Y1053250D01*
+X145350Y1052500D02*X147600D01*
+X144600Y1053250D02*X145350Y1052500D01*
+X98000Y1057300D02*X99200Y1058500D01*
+Y1052500D01*
+X98000D02*X100250D01*
+X102050Y1054750D02*X105050Y1058500D01*
+X102050Y1054750D02*X105800D01*
+X105050Y1058500D02*Y1052500D01*
+X45000Y1053250D02*X45750Y1052500D01*
+X45000Y1057750D02*Y1053250D01*
+Y1057750D02*X45750Y1058500D01*
+X47250D01*
+X48000Y1057750D01*
+Y1053250D01*
+X47250Y1052500D02*X48000Y1053250D01*
+X45750Y1052500D02*X47250D01*
+X45000Y1054000D02*X48000Y1057000D01*
+X49800Y1052500D02*X50550D01*
+X52350Y1053250D02*X53100Y1052500D01*
+X52350Y1057750D02*Y1053250D01*
+Y1057750D02*X53100Y1058500D01*
+X54600D01*
+X55350Y1057750D01*
+Y1053250D01*
+X54600Y1052500D02*X55350Y1053250D01*
+X53100Y1052500D02*X54600D01*
+X52350Y1054000D02*X55350Y1057000D01*
+X57150Y1054750D02*X60150Y1058500D01*
+X57150Y1054750D02*X60900D01*
+X60150Y1058500D02*Y1052500D01*
+X62700Y1053250D02*X63450Y1052500D01*
+X62700Y1057750D02*Y1053250D01*
+Y1057750D02*X63450Y1058500D01*
+X64950D01*
+X65700Y1057750D01*
+Y1053250D01*
+X64950Y1052500D02*X65700Y1053250D01*
+X63450Y1052500D02*X64950D01*
+X62700Y1054000D02*X65700Y1057000D01*
+X157900Y597600D02*X161100D01*
+X157900D02*Y594400D01*
+X161100D01*
+Y597600D02*Y594400D01*
+X177900Y597600D02*X181100D01*
+X177900D02*Y594400D01*
+X181100D01*
+Y597600D02*Y594400D01*
+X163361Y733883D02*X166561D01*
+X163361D02*Y730683D01*
+X166561D01*
+Y733883D02*Y730683D01*
+X186400Y733600D02*X189600D01*
+X186400D02*Y730400D01*
+X189600D01*
+Y733600D02*Y730400D01*
+X393136Y620466D02*X396336D01*
+X393136D02*Y617266D01*
+X396336D01*
+Y620466D02*Y617266D01*
+X13400Y1072850D02*X16600D01*
+X13400D02*Y1069650D01*
+X16600D01*
+Y1072850D02*Y1069650D01*
+X135000Y1073500D02*X136500Y1070500D01*
+X138000Y1073500D01*
+X136500Y1070500D02*Y1067500D01*
+X139800Y1070800D02*X142050D01*
+X139800Y1067500D02*X142800D01*
+X139800Y1073500D02*Y1067500D01*
+Y1073500D02*X142800D01*
+X147600D02*X148350Y1072750D01*
+X145350Y1073500D02*X147600D01*
+X144600Y1072750D02*X145350Y1073500D01*
+X144600Y1072750D02*Y1071250D01*
+X145350Y1070500D01*
+X147600D01*
+X148350Y1069750D01*
+Y1068250D01*
+X147600Y1067500D02*X148350Y1068250D01*
+X145350Y1067500D02*X147600D01*
+X144600Y1068250D02*X145350Y1067500D01*
+X98000Y1073500D02*X101000D01*
+X98000D02*Y1070500D01*
+X98750Y1071250D01*
+X100250D01*
+X101000Y1070500D01*
+Y1068250D01*
+X100250Y1067500D02*X101000Y1068250D01*
+X98750Y1067500D02*X100250D01*
+X98000Y1068250D02*X98750Y1067500D01*
+X45000Y1068250D02*X45750Y1067500D01*
+X45000Y1072750D02*Y1068250D01*
+Y1072750D02*X45750Y1073500D01*
+X47250D01*
+X48000Y1072750D01*
+Y1068250D01*
+X47250Y1067500D02*X48000Y1068250D01*
+X45750Y1067500D02*X47250D01*
+X45000Y1069000D02*X48000Y1072000D01*
+X49800Y1067500D02*X50550D01*
+X52350Y1068250D02*X53100Y1067500D01*
+X52350Y1072750D02*Y1068250D01*
+Y1072750D02*X53100Y1073500D01*
+X54600D01*
+X55350Y1072750D01*
+Y1068250D01*
+X54600Y1067500D02*X55350Y1068250D01*
+X53100Y1067500D02*X54600D01*
+X52350Y1069000D02*X55350Y1072000D01*
+X57150Y1069750D02*X60150Y1073500D01*
+X57150Y1069750D02*X60900D01*
+X60150Y1073500D02*Y1067500D01*
+X62700Y1068250D02*X63450Y1067500D01*
+X62700Y1072750D02*Y1068250D01*
+Y1072750D02*X63450Y1073500D01*
+X64950D01*
+X65700Y1072750D01*
+Y1068250D01*
+X64950Y1067500D02*X65700Y1068250D01*
+X63450Y1067500D02*X64950D01*
+X62700Y1069000D02*X65700Y1072000D01*
+X173900Y756800D02*G75*G03X175500Y756800I800J0D01*G01*
+G75*G03X173900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X175500Y766800I800J0D01*G01*
+G75*G03X173900Y766800I-800J0D01*G01*
+X183900Y756800D02*G75*G03X185500Y756800I800J0D01*G01*
+G75*G03X183900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X185500Y766800I800J0D01*G01*
+G75*G03X183900Y766800I-800J0D01*G01*
+X193900Y756800D02*G75*G03X195500Y756800I800J0D01*G01*
+G75*G03X193900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X195500Y766800I800J0D01*G01*
+G75*G03X193900Y766800I-800J0D01*G01*
+X203900Y756800D02*G75*G03X205500Y756800I800J0D01*G01*
+G75*G03X203900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X205500Y766800I800J0D01*G01*
+G75*G03X203900Y766800I-800J0D01*G01*
+X213900Y756800D02*G75*G03X215500Y756800I800J0D01*G01*
+G75*G03X213900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X215500Y766800I800J0D01*G01*
+G75*G03X213900Y766800I-800J0D01*G01*
+X223900Y756800D02*G75*G03X225500Y756800I800J0D01*G01*
+G75*G03X223900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X225500Y766800I800J0D01*G01*
+G75*G03X223900Y766800I-800J0D01*G01*
+X233900Y756800D02*G75*G03X235500Y756800I800J0D01*G01*
+G75*G03X233900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X235500Y766800I800J0D01*G01*
+G75*G03X233900Y766800I-800J0D01*G01*
+X243900Y756800D02*G75*G03X245500Y756800I800J0D01*G01*
+G75*G03X243900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X245500Y766800I800J0D01*G01*
+G75*G03X243900Y766800I-800J0D01*G01*
+X253900Y756800D02*G75*G03X255500Y756800I800J0D01*G01*
+G75*G03X253900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X255500Y766800I800J0D01*G01*
+G75*G03X253900Y766800I-800J0D01*G01*
+X263900Y756800D02*G75*G03X265500Y756800I800J0D01*G01*
+G75*G03X263900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X265500Y766800I800J0D01*G01*
+G75*G03X263900Y766800I-800J0D01*G01*
+X273900Y756800D02*G75*G03X275500Y756800I800J0D01*G01*
+G75*G03X273900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X275500Y766800I800J0D01*G01*
+G75*G03X273900Y766800I-800J0D01*G01*
+X283900Y756800D02*G75*G03X285500Y756800I800J0D01*G01*
+G75*G03X283900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X285500Y766800I800J0D01*G01*
+G75*G03X283900Y766800I-800J0D01*G01*
+X293900Y756800D02*G75*G03X295500Y756800I800J0D01*G01*
+G75*G03X293900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X295500Y766800I800J0D01*G01*
+G75*G03X293900Y766800I-800J0D01*G01*
+X303900Y756800D02*G75*G03X305500Y756800I800J0D01*G01*
+G75*G03X303900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X305500Y766800I800J0D01*G01*
+G75*G03X303900Y766800I-800J0D01*G01*
+X313900Y756800D02*G75*G03X315500Y756800I800J0D01*G01*
+G75*G03X313900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X315500Y766800I800J0D01*G01*
+G75*G03X313900Y766800I-800J0D01*G01*
+X323900Y756800D02*G75*G03X325500Y756800I800J0D01*G01*
+G75*G03X323900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X325500Y766800I800J0D01*G01*
+G75*G03X323900Y766800I-800J0D01*G01*
+X333900Y756800D02*G75*G03X335500Y756800I800J0D01*G01*
+G75*G03X333900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X335500Y766800I800J0D01*G01*
+G75*G03X333900Y766800I-800J0D01*G01*
+X343900Y756800D02*G75*G03X345500Y756800I800J0D01*G01*
+G75*G03X343900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X345500Y766800I800J0D01*G01*
+G75*G03X343900Y766800I-800J0D01*G01*
+X353900Y756800D02*G75*G03X355500Y756800I800J0D01*G01*
+G75*G03X353900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X355500Y766800I800J0D01*G01*
+G75*G03X353900Y766800I-800J0D01*G01*
+X363900Y756800D02*G75*G03X365500Y756800I800J0D01*G01*
+G75*G03X363900Y756800I-800J0D01*G01*
+Y766800D02*G75*G03X365500Y766800I800J0D01*G01*
+G75*G03X363900Y766800I-800J0D01*G01*
+X14200Y1086250D02*G75*G03X15800Y1086250I800J0D01*G01*
+G75*G03X14200Y1086250I-800J0D01*G01*
+X135000Y1088500D02*X136500Y1085500D01*
+X138000Y1088500D01*
+X136500Y1085500D02*Y1082500D01*
+X139800Y1085800D02*X142050D01*
+X139800Y1082500D02*X142800D01*
+X139800Y1088500D02*Y1082500D01*
+Y1088500D02*X142800D01*
+X147600D02*X148350Y1087750D01*
+X145350Y1088500D02*X147600D01*
+X144600Y1087750D02*X145350Y1088500D01*
+X144600Y1087750D02*Y1086250D01*
+X145350Y1085500D01*
+X147600D01*
+X148350Y1084750D01*
+Y1083250D01*
+X147600Y1082500D02*X148350Y1083250D01*
+X145350Y1082500D02*X147600D01*
+X144600Y1083250D02*X145350Y1082500D01*
+X98000Y1084750D02*X101000Y1088500D01*
+X98000Y1084750D02*X101750D01*
+X101000Y1088500D02*Y1082500D01*
+X103550Y1083250D02*X104300Y1082500D01*
+X103550Y1087750D02*Y1083250D01*
+Y1087750D02*X104300Y1088500D01*
+X105800D01*
+X106550Y1087750D01*
+Y1083250D01*
+X105800Y1082500D02*X106550Y1083250D01*
+X104300Y1082500D02*X105800D01*
+X103550Y1084000D02*X106550Y1087000D01*
+X45000Y1083250D02*X45750Y1082500D01*
+X45000Y1087750D02*Y1083250D01*
+Y1087750D02*X45750Y1088500D01*
+X47250D01*
+X48000Y1087750D01*
+Y1083250D01*
+X47250Y1082500D02*X48000Y1083250D01*
+X45750Y1082500D02*X47250D01*
+X45000Y1084000D02*X48000Y1087000D01*
+X49800Y1082500D02*X50550D01*
+X52350Y1083250D02*X53100Y1082500D01*
+X52350Y1087750D02*Y1083250D01*
+Y1087750D02*X53100Y1088500D01*
+X54600D01*
+X55350Y1087750D01*
+Y1083250D01*
+X54600Y1082500D02*X55350Y1083250D01*
+X53100Y1082500D02*X54600D01*
+X52350Y1084000D02*X55350Y1087000D01*
+X57150Y1087750D02*X57900Y1088500D01*
+X59400D01*
+X60150Y1087750D01*
+X59400Y1082500D02*X60150Y1083250D01*
+X57900Y1082500D02*X59400D01*
+X57150Y1083250D02*X57900Y1082500D01*
+Y1085800D02*X59400D01*
+X60150Y1087750D02*Y1086550D01*
+Y1085050D02*Y1083250D01*
+Y1085050D02*X59400Y1085800D01*
+X60150Y1086550D02*X59400Y1085800D01*
+X61950Y1083250D02*X62700Y1082500D01*
+X61950Y1084450D02*Y1083250D01*
+Y1084450D02*X63000Y1085500D01*
+X63900D01*
+X64950Y1084450D01*
+Y1083250D01*
+X64200Y1082500D02*X64950Y1083250D01*
+X62700Y1082500D02*X64200D01*
+X61950Y1086550D02*X63000Y1085500D01*
+X61950Y1087750D02*Y1086550D01*
+Y1087750D02*X62700Y1088500D01*
+X64200D01*
+X64950Y1087750D01*
+Y1086550D01*
+X63900Y1085500D02*X64950Y1086550D01*
+X218225Y606999D02*X220625Y604599D01*
+X218225D02*X220625Y606999D01*
+X204446D02*X206846Y604599D01*
+X204446D02*X206846Y606999D01*
+X265800Y606590D02*X268200Y604190D01*
+X265800D02*X268200Y606590D01*
+X265800Y592810D02*X268200Y590410D01*
+X265800D02*X268200Y592810D01*
+X179335Y710476D02*X181735Y708076D01*
+X179335D02*X181735Y710476D01*
+X165556D02*X167956Y708076D01*
+X165556D02*X167956Y710476D01*
+X294749Y584968D02*X297149Y582568D01*
+X294749D02*X297149Y584968D01*
+X294749Y571188D02*X297149Y568788D01*
+X294749D02*X297149Y571188D01*
+X406036Y649956D02*X408436Y647556D01*
+X406036D02*X408436Y649956D01*
+X406036Y636176D02*X408436Y633776D01*
+X406036D02*X408436Y636176D01*
+X13800Y1102450D02*X16200Y1100050D01*
+X13800D02*X16200Y1102450D01*
+X135000Y1103500D02*X136500Y1100500D01*
+X138000Y1103500D01*
+X136500Y1100500D02*Y1097500D01*
+X139800Y1100800D02*X142050D01*
+X139800Y1097500D02*X142800D01*
+X139800Y1103500D02*Y1097500D01*
+Y1103500D02*X142800D01*
+X147600D02*X148350Y1102750D01*
+X145350Y1103500D02*X147600D01*
+X144600Y1102750D02*X145350Y1103500D01*
+X144600Y1102750D02*Y1101250D01*
+X145350Y1100500D01*
+X147600D01*
+X148350Y1099750D01*
+Y1098250D01*
+X147600Y1097500D02*X148350Y1098250D01*
+X145350Y1097500D02*X147600D01*
+X144600Y1098250D02*X145350Y1097500D01*
+X98000Y1102300D02*X99200Y1103500D01*
+Y1097500D01*
+X98000D02*X100250D01*
+X102050Y1098250D02*X102800Y1097500D01*
+X102050Y1102750D02*Y1098250D01*
+Y1102750D02*X102800Y1103500D01*
+X104300D01*
+X105050Y1102750D01*
+Y1098250D01*
+X104300Y1097500D02*X105050Y1098250D01*
+X102800Y1097500D02*X104300D01*
+X102050Y1099000D02*X105050Y1102000D01*
+X45000Y1098250D02*X45750Y1097500D01*
+X45000Y1102750D02*Y1098250D01*
+Y1102750D02*X45750Y1103500D01*
+X47250D01*
+X48000Y1102750D01*
+Y1098250D01*
+X47250Y1097500D02*X48000Y1098250D01*
+X45750Y1097500D02*X47250D01*
+X45000Y1099000D02*X48000Y1102000D01*
+X49800Y1097500D02*X50550D01*
+X52350Y1098250D02*X53100Y1097500D01*
+X52350Y1102750D02*Y1098250D01*
+Y1102750D02*X53100Y1103500D01*
+X54600D01*
+X55350Y1102750D01*
+Y1098250D01*
+X54600Y1097500D02*X55350Y1098250D01*
+X53100Y1097500D02*X54600D01*
+X52350Y1099000D02*X55350Y1102000D01*
+X57150Y1102750D02*X57900Y1103500D01*
+X59400D01*
+X60150Y1102750D01*
+X59400Y1097500D02*X60150Y1098250D01*
+X57900Y1097500D02*X59400D01*
+X57150Y1098250D02*X57900Y1097500D01*
+Y1100800D02*X59400D01*
+X60150Y1102750D02*Y1101550D01*
+Y1100050D02*Y1098250D01*
+Y1100050D02*X59400Y1100800D01*
+X60150Y1101550D02*X59400Y1100800D01*
+X61950Y1103500D02*X64950D01*
+X61950D02*Y1100500D01*
+X62700Y1101250D01*
+X64200D01*
+X64950Y1100500D01*
+Y1098250D01*
+X64200Y1097500D02*X64950Y1098250D01*
+X62700Y1097500D02*X64200D01*
+X61950Y1098250D02*X62700Y1097500D01*
+X305500Y669600D02*Y666400D01*
+X303900Y668000D02*X307100D01*
+X292500Y669600D02*Y666400D01*
+X290900Y668000D02*X294100D01*
+X299000Y669600D02*Y666400D01*
+X297400Y668000D02*X300600D01*
+X285500Y669600D02*Y666400D01*
+X283900Y668000D02*X287100D01*
+X295500Y600100D02*Y596900D01*
+X293900Y598500D02*X297100D01*
+X302000Y600100D02*Y596900D01*
+X300400Y598500D02*X303600D01*
+X289000Y600100D02*Y596900D01*
+X287400Y598500D02*X290600D01*
+X219500Y624600D02*Y621400D01*
+X217900Y623000D02*X221100D01*
+X225072Y616028D02*Y612828D01*
+X223472Y614428D02*X226672D01*
+X208000Y695100D02*Y691900D01*
+X206400Y693500D02*X209600D01*
+X232500Y624100D02*Y620900D01*
+X230900Y622500D02*X234100D01*
+X240000Y624600D02*Y621400D01*
+X238400Y623000D02*X241600D01*
+X209000Y659600D02*Y656400D01*
+X207400Y658000D02*X210600D01*
+X209000Y649100D02*Y645900D01*
+X207400Y647500D02*X210600D01*
+X209000Y643100D02*Y639900D01*
+X207400Y641500D02*X210600D01*
+X192000Y749100D02*Y745900D01*
+X190400Y747500D02*X193600D01*
+X186000Y745100D02*Y741900D01*
+X184400Y743500D02*X187600D01*
+X180000Y749100D02*Y745900D01*
+X178400Y747500D02*X181600D01*
+X174500Y745100D02*Y741900D01*
+X172900Y743500D02*X176100D01*
+X169000Y749100D02*Y745900D01*
+X167400Y747500D02*X170600D01*
+X209000Y665600D02*Y662400D01*
+X207400Y664000D02*X210600D01*
+X209000Y671600D02*Y668400D01*
+X207400Y670000D02*X210600D01*
+X209000Y677600D02*Y674400D01*
+X207400Y676000D02*X210600D01*
+X262500Y677600D02*Y674400D01*
+X260900Y676000D02*X264100D01*
+X209000Y683600D02*Y680400D01*
+X207400Y682000D02*X210600D01*
+X262500Y683600D02*Y680400D01*
+X260900Y682000D02*X264100D01*
+X262500Y671600D02*Y668400D01*
+X260900Y670000D02*X264100D01*
+X262500Y665600D02*Y662400D01*
+X260900Y664000D02*X264100D01*
+X262500Y659600D02*Y656400D01*
+X260900Y658000D02*X264100D01*
+X273500Y620600D02*Y617400D01*
+X271900Y619000D02*X275100D01*
+X273500Y614600D02*Y611400D01*
+X271900Y613000D02*X275100D01*
+X225984Y692151D02*Y688951D01*
+X224384Y690551D02*X227584D01*
+X244488Y692151D02*Y688951D01*
+X242888Y690551D02*X246088D01*
+X244874Y726340D02*Y723140D01*
+X243274Y724740D02*X246474D01*
+X297602Y730809D02*Y727609D01*
+X296002Y729209D02*X299202D01*
+X309600Y736000D02*Y732800D01*
+X308000Y734400D02*X311200D01*
+X305000Y730000D02*Y726800D01*
+X303400Y728400D02*X306600D01*
+X270098Y699872D02*Y696672D01*
+X268498Y698272D02*X271698D01*
+X15000Y1117850D02*Y1114650D01*
+X13400Y1116250D02*X16600D01*
+X135000Y1118500D02*X136500Y1115500D01*
+X138000Y1118500D01*
+X136500Y1115500D02*Y1112500D01*
+X139800Y1115800D02*X142050D01*
+X139800Y1112500D02*X142800D01*
+X139800Y1118500D02*Y1112500D01*
+Y1118500D02*X142800D01*
+X147600D02*X148350Y1117750D01*
+X145350Y1118500D02*X147600D01*
+X144600Y1117750D02*X145350Y1118500D01*
+X144600Y1117750D02*Y1116250D01*
+X145350Y1115500D01*
+X147600D01*
+X148350Y1114750D01*
+Y1113250D01*
+X147600Y1112500D02*X148350Y1113250D01*
+X145350Y1112500D02*X147600D01*
+X144600Y1113250D02*X145350Y1112500D01*
+X98000Y1117750D02*X98750Y1118500D01*
+X100250D01*
+X101000Y1117750D01*
+X100250Y1112500D02*X101000Y1113250D01*
+X98750Y1112500D02*X100250D01*
+X98000Y1113250D02*X98750Y1112500D01*
+Y1115800D02*X100250D01*
+X101000Y1117750D02*Y1116550D01*
+Y1115050D02*Y1113250D01*
+Y1115050D02*X100250Y1115800D01*
+X101000Y1116550D02*X100250Y1115800D01*
+X102800Y1113250D02*X103550Y1112500D01*
+X102800Y1114450D02*Y1113250D01*
+Y1114450D02*X103850Y1115500D01*
+X104750D01*
+X105800Y1114450D01*
+Y1113250D01*
+X105050Y1112500D02*X105800Y1113250D01*
+X103550Y1112500D02*X105050D01*
+X102800Y1116550D02*X103850Y1115500D01*
+X102800Y1117750D02*Y1116550D01*
+Y1117750D02*X103550Y1118500D01*
+X105050D01*
+X105800Y1117750D01*
+Y1116550D01*
+X104750Y1115500D02*X105800Y1116550D01*
+X45000Y1113250D02*X45750Y1112500D01*
+X45000Y1117750D02*Y1113250D01*
+Y1117750D02*X45750Y1118500D01*
+X47250D01*
+X48000Y1117750D01*
+Y1113250D01*
+X47250Y1112500D02*X48000Y1113250D01*
+X45750Y1112500D02*X47250D01*
+X45000Y1114000D02*X48000Y1117000D01*
+X49800Y1112500D02*X50550D01*
+X52350Y1113250D02*X53100Y1112500D01*
+X52350Y1117750D02*Y1113250D01*
+Y1117750D02*X53100Y1118500D01*
+X54600D01*
+X55350Y1117750D01*
+Y1113250D01*
+X54600Y1112500D02*X55350Y1113250D01*
+X53100Y1112500D02*X54600D01*
+X52350Y1114000D02*X55350Y1117000D01*
+X57150Y1117750D02*X57900Y1118500D01*
+X59400D01*
+X60150Y1117750D01*
+X59400Y1112500D02*X60150Y1113250D01*
+X57900Y1112500D02*X59400D01*
+X57150Y1113250D02*X57900Y1112500D01*
+Y1115800D02*X59400D01*
+X60150Y1117750D02*Y1116550D01*
+Y1115050D02*Y1113250D01*
+Y1115050D02*X59400Y1115800D01*
+X60150Y1116550D02*X59400Y1115800D01*
+X61950Y1118500D02*X64950D01*
+X61950D02*Y1115500D01*
+X62700Y1116250D01*
+X64200D01*
+X64950Y1115500D01*
+Y1113250D01*
+X64200Y1112500D02*X64950Y1113250D01*
+X62700Y1112500D02*X64200D01*
+X61950Y1113250D02*X62700Y1112500D01*
+X322500Y619500D02*Y617900D01*
+Y619500D02*X323887Y620300D01*
+X322500Y619500D02*X321113Y620300D01*
+X304500Y604000D02*Y602400D01*
+Y604000D02*X305887Y604800D01*
+X304500Y604000D02*X303113Y604800D01*
+X365000Y610000D02*Y608400D01*
+Y610000D02*X366387Y610800D01*
+X365000Y610000D02*X363613Y610800D01*
+X246000Y624500D02*Y622900D01*
+Y624500D02*X247387Y625300D01*
+X246000Y624500D02*X244613Y625300D01*
+X256000Y624500D02*Y622900D01*
+Y624500D02*X257387Y625300D01*
+X256000Y624500D02*X254613Y625300D01*
+X343000Y604000D02*Y602400D01*
+Y604000D02*X344387Y604800D01*
+X343000Y604000D02*X341613Y604800D01*
+X346000Y638500D02*Y636900D01*
+Y638500D02*X347387Y639300D01*
+X346000Y638500D02*X344613Y639300D01*
+X373000Y640000D02*Y638400D01*
+Y640000D02*X374387Y640800D01*
+X373000Y640000D02*X371613Y640800D01*
+X329500Y598000D02*Y596400D01*
+Y598000D02*X330887Y598800D01*
+X329500Y598000D02*X328113Y598800D01*
+X322500Y599000D02*Y597400D01*
+Y599000D02*X323887Y599800D01*
+X322500Y599000D02*X321113Y599800D01*
+X274000Y643000D02*Y641400D01*
+Y643000D02*X275387Y643800D01*
+X274000Y643000D02*X272613Y643800D01*
+X412598Y738976D02*Y737376D01*
+Y738976D02*X413985Y739776D01*
+X412598Y738976D02*X411212Y739776D01*
+X412598Y744094D02*Y742494D01*
+Y744094D02*X413985Y744894D01*
+X412598Y744094D02*X411212Y744894D01*
+X414961Y718110D02*Y716510D01*
+Y718110D02*X416347Y718910D01*
+X414961Y718110D02*X413574Y718910D01*
+X416654Y723110D02*Y721510D01*
+Y723110D02*X418040Y723910D01*
+X416654Y723110D02*X415267Y723910D01*
+X396236Y606366D02*Y604766D01*
+Y606366D02*X397623Y607166D01*
+X396236Y606366D02*X394850Y607166D01*
+X391800Y743700D02*Y742100D01*
+Y743700D02*X393187Y744500D01*
+X391800Y743700D02*X390413Y744500D01*
+X391800Y723300D02*Y721700D01*
+Y723300D02*X393187Y724100D01*
+X391800Y723300D02*X390413Y724100D01*
+X391800Y702300D02*Y700700D01*
+Y702300D02*X393187Y703100D01*
+X391800Y702300D02*X390413Y703100D01*
+X392000Y729000D02*Y727400D01*
+Y729000D02*X393387Y729800D01*
+X392000Y729000D02*X390613Y729800D01*
+X392000Y708200D02*Y706600D01*
+Y708200D02*X393387Y709000D01*
+X392000Y708200D02*X390613Y709000D01*
+X391900Y687200D02*Y685600D01*
+Y687200D02*X393287Y688000D01*
+X391900Y687200D02*X390513Y688000D01*
+X396700Y704600D02*Y703000D01*
+Y704600D02*X398087Y705400D01*
+X396700Y704600D02*X395313Y705400D01*
+X309800Y748600D02*Y747000D01*
+Y748600D02*X311187Y749400D01*
+X309800Y748600D02*X308413Y749400D01*
+X358500Y740000D02*Y738400D01*
+Y740000D02*X359887Y740800D01*
+X358500Y740000D02*X357113Y740800D01*
+X15000Y1131250D02*Y1129650D01*
+Y1131250D02*X16387Y1132050D01*
+X15000Y1131250D02*X13613Y1132050D01*
+X135000Y1133500D02*X136500Y1130500D01*
+X138000Y1133500D01*
+X136500Y1130500D02*Y1127500D01*
+X139800Y1130800D02*X142050D01*
+X139800Y1127500D02*X142800D01*
+X139800Y1133500D02*Y1127500D01*
+Y1133500D02*X142800D01*
+X147600D02*X148350Y1132750D01*
+X145350Y1133500D02*X147600D01*
+X144600Y1132750D02*X145350Y1133500D01*
+X144600Y1132750D02*Y1131250D01*
+X145350Y1130500D01*
+X147600D01*
+X148350Y1129750D01*
+Y1128250D01*
+X147600Y1127500D02*X148350Y1128250D01*
+X145350Y1127500D02*X147600D01*
+X144600Y1128250D02*X145350Y1127500D01*
+X98000Y1132750D02*X98750Y1133500D01*
+X101000D01*
+X101750Y1132750D01*
+Y1131250D01*
+X98000Y1127500D02*X101750Y1131250D01*
+X98000Y1127500D02*X101750D01*
+X103550Y1133500D02*X106550D01*
+X103550D02*Y1130500D01*
+X104300Y1131250D01*
+X105800D01*
+X106550Y1130500D01*
+Y1128250D01*
+X105800Y1127500D02*X106550Y1128250D01*
+X104300Y1127500D02*X105800D01*
+X103550Y1128250D02*X104300Y1127500D01*
+X45000Y1128250D02*X45750Y1127500D01*
+X45000Y1132750D02*Y1128250D01*
+Y1132750D02*X45750Y1133500D01*
+X47250D01*
+X48000Y1132750D01*
+Y1128250D01*
+X47250Y1127500D02*X48000Y1128250D01*
+X45750Y1127500D02*X47250D01*
+X45000Y1129000D02*X48000Y1132000D01*
+X49800Y1127500D02*X50550D01*
+X52350Y1128250D02*X53100Y1127500D01*
+X52350Y1132750D02*Y1128250D01*
+Y1132750D02*X53100Y1133500D01*
+X54600D01*
+X55350Y1132750D01*
+Y1128250D01*
+X54600Y1127500D02*X55350Y1128250D01*
+X53100Y1127500D02*X54600D01*
+X52350Y1129000D02*X55350Y1132000D01*
+X57150Y1132750D02*X57900Y1133500D01*
+X60150D01*
+X60900Y1132750D01*
+Y1131250D01*
+X57150Y1127500D02*X60900Y1131250D01*
+X57150Y1127500D02*X60900D01*
+X62700Y1128250D02*X63450Y1127500D01*
+X62700Y1132750D02*Y1128250D01*
+Y1132750D02*X63450Y1133500D01*
+X64950D01*
+X65700Y1132750D01*
+Y1128250D01*
+X64950Y1127500D02*X65700Y1128250D01*
+X63450Y1127500D02*X64950D01*
+X62700Y1129000D02*X65700Y1132000D01*
+X3000Y1148500D02*X3750Y1147750D01*
+X750Y1148500D02*X3000D01*
+X0Y1147750D02*X750Y1148500D01*
+X0Y1147750D02*Y1146250D01*
+X750Y1145500D01*
+X3000D01*
+X3750Y1144750D01*
+Y1143250D01*
+X3000Y1142500D02*X3750Y1143250D01*
+X750Y1142500D02*X3000D01*
+X0Y1143250D02*X750Y1142500D01*
+X5550Y1145500D02*Y1143250D01*
+X6300Y1142500D01*
+X8550Y1145500D02*Y1141000D01*
+X7800Y1140250D02*X8550Y1141000D01*
+X6300Y1140250D02*X7800D01*
+X5550Y1141000D02*X6300Y1140250D01*
+Y1142500D02*X7800D01*
+X8550Y1143250D01*
+X11100Y1144750D02*Y1142500D01*
+Y1144750D02*X11850Y1145500D01*
+X12600D01*
+X13350Y1144750D01*
+Y1142500D01*
+Y1144750D02*X14100Y1145500D01*
+X14850D01*
+X15600Y1144750D01*
+Y1142500D01*
+X10350Y1145500D02*X11100Y1144750D01*
+X17400Y1148500D02*Y1142500D01*
+Y1143250D02*X18150Y1142500D01*
+X19650D01*
+X20400Y1143250D01*
+Y1144750D02*Y1143250D01*
+X19650Y1145500D02*X20400Y1144750D01*
+X18150Y1145500D02*X19650D01*
+X17400Y1144750D02*X18150Y1145500D01*
+X22200Y1144750D02*Y1143250D01*
+Y1144750D02*X22950Y1145500D01*
+X24450D01*
+X25200Y1144750D01*
+Y1143250D01*
+X24450Y1142500D02*X25200Y1143250D01*
+X22950Y1142500D02*X24450D01*
+X22200Y1143250D02*X22950Y1142500D01*
+X27000Y1148500D02*Y1143250D01*
+X27750Y1142500D01*
+X0Y1139250D02*X29250D01*
+X41750Y1148500D02*Y1142500D01*
+X43700Y1148500D02*X44750Y1147450D01*
+Y1143550D01*
+X43700Y1142500D02*X44750Y1143550D01*
+X41000Y1142500D02*X43700D01*
+X41000Y1148500D02*X43700D01*
+G54D114*X46550Y1147000D02*Y1146850D01*
+G54D113*Y1144750D02*Y1142500D01*
+X50300Y1145500D02*X51050Y1144750D01*
+X48800Y1145500D02*X50300D01*
+X48050Y1144750D02*X48800Y1145500D01*
+X48050Y1144750D02*Y1143250D01*
+X48800Y1142500D01*
+X51050Y1145500D02*Y1143250D01*
+X51800Y1142500D01*
+X48800D02*X50300D01*
+X51050Y1143250D01*
+X54350Y1144750D02*Y1142500D01*
+Y1144750D02*X55100Y1145500D01*
+X55850D01*
+X56600Y1144750D01*
+Y1142500D01*
+Y1144750D02*X57350Y1145500D01*
+X58100D01*
+X58850Y1144750D01*
+Y1142500D01*
+X53600Y1145500D02*X54350Y1144750D01*
+X60650Y1142500D02*X61400D01*
+X65900Y1143250D02*X66650Y1142500D01*
+X65900Y1147750D02*X66650Y1148500D01*
+X65900Y1147750D02*Y1143250D01*
+X68450Y1148500D02*X69950D01*
+X69200D02*Y1142500D01*
+X68450D02*X69950D01*
+X72500Y1144750D02*Y1142500D01*
+Y1144750D02*X73250Y1145500D01*
+X74000D01*
+X74750Y1144750D01*
+Y1142500D01*
+X71750Y1145500D02*X72500Y1144750D01*
+X77300Y1145500D02*X79550D01*
+X76550Y1144750D02*X77300Y1145500D01*
+X76550Y1144750D02*Y1143250D01*
+X77300Y1142500D01*
+X79550D01*
+X81350Y1148500D02*Y1142500D01*
+Y1144750D02*X82100Y1145500D01*
+X83600D01*
+X84350Y1144750D01*
+Y1142500D01*
+X86150Y1148500D02*X86900Y1147750D01*
+Y1143250D01*
+X86150Y1142500D02*X86900Y1143250D01*
+X41000Y1139250D02*X88700D01*
+X96050Y1142500D02*X98000D01*
+X95000Y1143550D02*X96050Y1142500D01*
+X95000Y1147450D02*Y1143550D01*
+Y1147450D02*X96050Y1148500D01*
+X98000D01*
+X99800Y1144750D02*Y1143250D01*
+Y1144750D02*X100550Y1145500D01*
+X102050D01*
+X102800Y1144750D01*
+Y1143250D01*
+X102050Y1142500D02*X102800Y1143250D01*
+X100550Y1142500D02*X102050D01*
+X99800Y1143250D02*X100550Y1142500D01*
+X104600Y1145500D02*Y1143250D01*
+X105350Y1142500D01*
+X106850D01*
+X107600Y1143250D01*
+Y1145500D02*Y1143250D01*
+X110150Y1144750D02*Y1142500D01*
+Y1144750D02*X110900Y1145500D01*
+X111650D01*
+X112400Y1144750D01*
+Y1142500D01*
+X109400Y1145500D02*X110150Y1144750D01*
+X114950Y1148500D02*Y1143250D01*
+X115700Y1142500D01*
+X114200Y1146250D02*X115700D01*
+X95000Y1139250D02*X117200D01*
+X130750Y1148500D02*Y1142500D01*
+X130000Y1148500D02*X133000D01*
+X133750Y1147750D01*
+Y1146250D01*
+X133000Y1145500D02*X133750Y1146250D01*
+X130750Y1145500D02*X133000D01*
+X135550Y1148500D02*Y1143250D01*
+X136300Y1142500D01*
+X140050Y1145500D02*X140800Y1144750D01*
+X138550Y1145500D02*X140050D01*
+X137800Y1144750D02*X138550Y1145500D01*
+X137800Y1144750D02*Y1143250D01*
+X138550Y1142500D01*
+X140800Y1145500D02*Y1143250D01*
+X141550Y1142500D01*
+X138550D02*X140050D01*
+X140800Y1143250D01*
+X144100Y1148500D02*Y1143250D01*
+X144850Y1142500D01*
+X143350Y1146250D02*X144850D01*
+X147100Y1142500D02*X149350D01*
+X146350Y1143250D02*X147100Y1142500D01*
+X146350Y1144750D02*Y1143250D01*
+Y1144750D02*X147100Y1145500D01*
+X148600D01*
+X149350Y1144750D01*
+X146350Y1144000D02*X149350D01*
+Y1144750D02*Y1144000D01*
+X154150Y1148500D02*Y1142500D01*
+X153400D02*X154150Y1143250D01*
+X151900Y1142500D02*X153400D01*
+X151150Y1143250D02*X151900Y1142500D01*
+X151150Y1144750D02*Y1143250D01*
+Y1144750D02*X151900Y1145500D01*
+X153400D01*
+X154150Y1144750D01*
+X157450Y1145500D02*Y1144750D01*
+Y1143250D02*Y1142500D01*
+X155950Y1147750D02*Y1147000D01*
+Y1147750D02*X156700Y1148500D01*
+X158200D01*
+X158950Y1147750D01*
+Y1147000D01*
+X157450Y1145500D02*X158950Y1147000D01*
+X130000Y1139250D02*X160750D01*
+X0Y1163500D02*X3000D01*
+X1500D02*Y1157500D01*
+X4800Y1163500D02*Y1157500D01*
+Y1159750D02*X5550Y1160500D01*
+X7050D01*
+X7800Y1159750D01*
+Y1157500D01*
+X10350D02*X12600D01*
+X9600Y1158250D02*X10350Y1157500D01*
+X9600Y1159750D02*Y1158250D01*
+Y1159750D02*X10350Y1160500D01*
+X11850D01*
+X12600Y1159750D01*
+X9600Y1159000D02*X12600D01*
+Y1159750D02*Y1159000D01*
+X15150Y1159750D02*Y1157500D01*
+Y1159750D02*X15900Y1160500D01*
+X17400D01*
+X14400D02*X15150Y1159750D01*
+X19950Y1157500D02*X22200D01*
+X19200Y1158250D02*X19950Y1157500D01*
+X19200Y1159750D02*Y1158250D01*
+Y1159750D02*X19950Y1160500D01*
+X21450D01*
+X22200Y1159750D01*
+X19200Y1159000D02*X22200D01*
+Y1159750D02*Y1159000D01*
+X28950Y1160500D02*X29700Y1159750D01*
+X27450Y1160500D02*X28950D01*
+X26700Y1159750D02*X27450Y1160500D01*
+X26700Y1159750D02*Y1158250D01*
+X27450Y1157500D01*
+X29700Y1160500D02*Y1158250D01*
+X30450Y1157500D01*
+X27450D02*X28950D01*
+X29700Y1158250D01*
+X33000Y1159750D02*Y1157500D01*
+Y1159750D02*X33750Y1160500D01*
+X35250D01*
+X32250D02*X33000Y1159750D01*
+X37800Y1157500D02*X40050D01*
+X37050Y1158250D02*X37800Y1157500D01*
+X37050Y1159750D02*Y1158250D01*
+Y1159750D02*X37800Y1160500D01*
+X39300D01*
+X40050Y1159750D01*
+X37050Y1159000D02*X40050D01*
+Y1159750D02*Y1159000D01*
+X45300Y1157500D02*X47550Y1160500D01*
+Y1162750D02*Y1160500D01*
+X46800Y1163500D02*X47550Y1162750D01*
+X45300Y1163500D02*X46800D01*
+X44550Y1162750D02*X45300Y1163500D01*
+X44550Y1162750D02*Y1161250D01*
+X45300Y1160500D01*
+X47550D01*
+X55050Y1163500D02*Y1157500D01*
+X54300D02*X55050Y1158250D01*
+X52800Y1157500D02*X54300D01*
+X52050Y1158250D02*X52800Y1157500D01*
+X52050Y1159750D02*Y1158250D01*
+Y1159750D02*X52800Y1160500D01*
+X54300D01*
+X55050Y1159750D01*
+G54D114*X56850Y1162000D02*Y1161850D01*
+G54D113*Y1159750D02*Y1157500D01*
+X59100Y1162750D02*Y1157500D01*
+Y1162750D02*X59850Y1163500D01*
+X60600D01*
+X58350Y1160500D02*X59850D01*
+X62850Y1162750D02*Y1157500D01*
+Y1162750D02*X63600Y1163500D01*
+X64350D01*
+X62100Y1160500D02*X63600D01*
+X66600Y1157500D02*X68850D01*
+X65850Y1158250D02*X66600Y1157500D01*
+X65850Y1159750D02*Y1158250D01*
+Y1159750D02*X66600Y1160500D01*
+X68100D01*
+X68850Y1159750D01*
+X65850Y1159000D02*X68850D01*
+Y1159750D02*Y1159000D01*
+X71400Y1159750D02*Y1157500D01*
+Y1159750D02*X72150Y1160500D01*
+X73650D01*
+X70650D02*X71400Y1159750D01*
+X76200Y1157500D02*X78450D01*
+X75450Y1158250D02*X76200Y1157500D01*
+X75450Y1159750D02*Y1158250D01*
+Y1159750D02*X76200Y1160500D01*
+X77700D01*
+X78450Y1159750D01*
+X75450Y1159000D02*X78450D01*
+Y1159750D02*Y1159000D01*
+X81000Y1159750D02*Y1157500D01*
+Y1159750D02*X81750Y1160500D01*
+X82500D01*
+X83250Y1159750D01*
+Y1157500D01*
+X80250Y1160500D02*X81000Y1159750D01*
+X85800Y1163500D02*Y1158250D01*
+X86550Y1157500D01*
+X85050Y1161250D02*X86550D01*
+X93750Y1163500D02*Y1157500D01*
+X93000D02*X93750Y1158250D01*
+X91500Y1157500D02*X93000D01*
+X90750Y1158250D02*X91500Y1157500D01*
+X90750Y1159750D02*Y1158250D01*
+Y1159750D02*X91500Y1160500D01*
+X93000D01*
+X93750Y1159750D01*
+X96300D02*Y1157500D01*
+Y1159750D02*X97050Y1160500D01*
+X98550D01*
+X95550D02*X96300Y1159750D01*
+G54D114*X100350Y1162000D02*Y1161850D01*
+G54D113*Y1159750D02*Y1157500D01*
+X101850Y1163500D02*Y1158250D01*
+X102600Y1157500D01*
+X104100Y1163500D02*Y1158250D01*
+X104850Y1157500D01*
+X109800D02*X112050D01*
+X112800Y1158250D01*
+X112050Y1159000D02*X112800Y1158250D01*
+X109800Y1159000D02*X112050D01*
+X109050Y1159750D02*X109800Y1159000D01*
+X109050Y1159750D02*X109800Y1160500D01*
+X112050D01*
+X112800Y1159750D01*
+X109050Y1158250D02*X109800Y1157500D01*
+G54D114*X114600Y1162000D02*Y1161850D01*
+G54D113*Y1159750D02*Y1157500D01*
+X116100Y1160500D02*X119100D01*
+X116100Y1157500D02*X119100Y1160500D01*
+X116100Y1157500D02*X119100D01*
+X121650D02*X123900D01*
+X120900Y1158250D02*X121650Y1157500D01*
+X120900Y1159750D02*Y1158250D01*
+Y1159750D02*X121650Y1160500D01*
+X123150D01*
+X123900Y1159750D01*
+X120900Y1159000D02*X123900D01*
+Y1159750D02*Y1159000D01*
+X126450Y1157500D02*X128700D01*
+X129450Y1158250D01*
+X128700Y1159000D02*X129450Y1158250D01*
+X126450Y1159000D02*X128700D01*
+X125700Y1159750D02*X126450Y1159000D01*
+X125700Y1159750D02*X126450Y1160500D01*
+X128700D01*
+X129450Y1159750D01*
+X125700Y1158250D02*X126450Y1157500D01*
+X133950Y1160500D02*Y1158250D01*
+X134700Y1157500D01*
+X136200D01*
+X136950Y1158250D01*
+Y1160500D02*Y1158250D01*
+X139500Y1157500D02*X141750D01*
+X142500Y1158250D01*
+X141750Y1159000D02*X142500Y1158250D01*
+X139500Y1159000D02*X141750D01*
+X138750Y1159750D02*X139500Y1159000D01*
+X138750Y1159750D02*X139500Y1160500D01*
+X141750D01*
+X142500Y1159750D01*
+X138750Y1158250D02*X139500Y1157500D01*
+X145050D02*X147300D01*
+X144300Y1158250D02*X145050Y1157500D01*
+X144300Y1159750D02*Y1158250D01*
+Y1159750D02*X145050Y1160500D01*
+X146550D01*
+X147300Y1159750D01*
+X144300Y1159000D02*X147300D01*
+Y1159750D02*Y1159000D01*
+X152100Y1163500D02*Y1157500D01*
+X151350D02*X152100Y1158250D01*
+X149850Y1157500D02*X151350D01*
+X149100Y1158250D02*X149850Y1157500D01*
+X149100Y1159750D02*Y1158250D01*
+Y1159750D02*X149850Y1160500D01*
+X151350D01*
+X152100Y1159750D01*
+G54D114*X156600Y1162000D02*Y1161850D01*
+G54D113*Y1159750D02*Y1157500D01*
+X158850Y1159750D02*Y1157500D01*
+Y1159750D02*X159600Y1160500D01*
+X160350D01*
+X161100Y1159750D01*
+Y1157500D01*
+X158100Y1160500D02*X158850Y1159750D01*
+X166350Y1163500D02*Y1158250D01*
+X167100Y1157500D01*
+X165600Y1161250D02*X167100D01*
+X168600Y1163500D02*Y1157500D01*
+Y1159750D02*X169350Y1160500D01*
+X170850D01*
+X171600Y1159750D01*
+Y1157500D01*
+G54D114*X173400Y1162000D02*Y1161850D01*
+G54D113*Y1159750D02*Y1157500D01*
+X175650D02*X177900D01*
+X178650Y1158250D01*
+X177900Y1159000D02*X178650Y1158250D01*
+X175650Y1159000D02*X177900D01*
+X174900Y1159750D02*X175650Y1159000D01*
+X174900Y1159750D02*X175650Y1160500D01*
+X177900D01*
+X178650Y1159750D01*
+X174900Y1158250D02*X175650Y1157500D01*
+X183150Y1163500D02*Y1158250D01*
+X183900Y1157500D01*
+X187650Y1160500D02*X188400Y1159750D01*
+X186150Y1160500D02*X187650D01*
+X185400Y1159750D02*X186150Y1160500D01*
+X185400Y1159750D02*Y1158250D01*
+X186150Y1157500D01*
+X188400Y1160500D02*Y1158250D01*
+X189150Y1157500D01*
+X186150D02*X187650D01*
+X188400Y1158250D01*
+X190950Y1160500D02*Y1158250D01*
+X191700Y1157500D01*
+X193950Y1160500D02*Y1156000D01*
+X193200Y1155250D02*X193950Y1156000D01*
+X191700Y1155250D02*X193200D01*
+X190950Y1156000D02*X191700Y1155250D01*
+Y1157500D02*X193200D01*
+X193950Y1158250D01*
+X195750Y1159750D02*Y1158250D01*
+Y1159750D02*X196500Y1160500D01*
+X198000D01*
+X198750Y1159750D01*
+Y1158250D01*
+X198000Y1157500D02*X198750Y1158250D01*
+X196500Y1157500D02*X198000D01*
+X195750Y1158250D02*X196500Y1157500D01*
+X200550Y1160500D02*Y1158250D01*
+X201300Y1157500D01*
+X202800D01*
+X203550Y1158250D01*
+Y1160500D02*Y1158250D01*
+X206100Y1163500D02*Y1158250D01*
+X206850Y1157500D01*
+X205350Y1161250D02*X206850D01*
+X208350Y1156000D02*X209850Y1157500D01*
+X214350Y1162300D02*X215550Y1163500D01*
+Y1157500D01*
+X214350D02*X216600D01*
+X218400Y1159750D02*X221400Y1163500D01*
+X218400Y1159750D02*X222150D01*
+X221400Y1163500D02*Y1157500D01*
+X223950Y1162750D02*X224700Y1163500D01*
+X226950D01*
+X227700Y1162750D01*
+Y1161250D01*
+X223950Y1157500D02*X227700Y1161250D01*
+X223950Y1157500D02*X227700D01*
+X232200Y1163500D02*Y1157500D01*
+Y1159750D02*X232950Y1160500D01*
+X234450D01*
+X235200Y1159750D01*
+Y1157500D01*
+X237000Y1159750D02*Y1158250D01*
+Y1159750D02*X237750Y1160500D01*
+X239250D01*
+X240000Y1159750D01*
+Y1158250D01*
+X239250Y1157500D02*X240000Y1158250D01*
+X237750Y1157500D02*X239250D01*
+X237000Y1158250D02*X237750Y1157500D01*
+X241800Y1163500D02*Y1158250D01*
+X242550Y1157500D01*
+X244800D02*X247050D01*
+X244050Y1158250D02*X244800Y1157500D01*
+X244050Y1159750D02*Y1158250D01*
+Y1159750D02*X244800Y1160500D01*
+X246300D01*
+X247050Y1159750D01*
+X244050Y1159000D02*X247050D01*
+Y1159750D02*Y1159000D01*
+X249600Y1157500D02*X251850D01*
+X252600Y1158250D01*
+X251850Y1159000D02*X252600Y1158250D01*
+X249600Y1159000D02*X251850D01*
+X248850Y1159750D02*X249600Y1159000D01*
+X248850Y1159750D02*X249600Y1160500D01*
+X251850D01*
+X252600Y1159750D01*
+X248850Y1158250D02*X249600Y1157500D01*
+X257850Y1163500D02*Y1158250D01*
+X258600Y1157500D01*
+X257100Y1161250D02*X258600D01*
+X260100Y1159750D02*Y1158250D01*
+Y1159750D02*X260850Y1160500D01*
+X262350D01*
+X263100Y1159750D01*
+Y1158250D01*
+X262350Y1157500D02*X263100Y1158250D01*
+X260850Y1157500D02*X262350D01*
+X260100Y1158250D02*X260850Y1157500D01*
+X265650Y1163500D02*Y1158250D01*
+X266400Y1157500D01*
+X264900Y1161250D02*X266400D01*
+X270150Y1160500D02*X270900Y1159750D01*
+X268650Y1160500D02*X270150D01*
+X267900Y1159750D02*X268650Y1160500D01*
+X267900Y1159750D02*Y1158250D01*
+X268650Y1157500D01*
+X270900Y1160500D02*Y1158250D01*
+X271650Y1157500D01*
+X268650D02*X270150D01*
+X270900Y1158250D01*
+X273450Y1163500D02*Y1158250D01*
+X274200Y1157500D01*
+G54D115*X141732Y763780D02*Y566929D01*
+X153543Y555118D02*X464567D01*
+X476378Y566929D02*Y763780D01*
+X464567Y775591D02*X153543D01*
+X141732Y763780D02*G75*G02X153543Y775591I11811J0D01*G01*
+X464567D02*G75*G02X476378Y763780I0J-11811D01*G01*
+Y566929D02*G75*G02X464567Y555118I-11811J0D01*G01*
+X141732Y566929D02*G75*G03X153543Y555118I11811J0D01*G01*
+G54D113*X413675Y-9500D02*X416675D01*
+X417425Y-8750D01*
+Y-6950D02*Y-8750D01*
+X416675Y-6200D02*X417425Y-6950D01*
+X414425Y-6200D02*X416675D01*
+X414425Y-3500D02*Y-9500D01*
+X413675Y-3500D02*X416675D01*
+X417425Y-4250D01*
+Y-5450D01*
+X416675Y-6200D02*X417425Y-5450D01*
+X419225Y-7250D02*Y-8750D01*
+Y-7250D02*X419975Y-6500D01*
+X421475D01*
+X422225Y-7250D01*
+Y-8750D01*
+X421475Y-9500D02*X422225Y-8750D01*
+X419975Y-9500D02*X421475D01*
+X419225Y-8750D02*X419975Y-9500D01*
+X426275Y-6500D02*X427025Y-7250D01*
+X424775Y-6500D02*X426275D01*
+X424025Y-7250D02*X424775Y-6500D01*
+X424025Y-7250D02*Y-8750D01*
+X424775Y-9500D01*
+X427025Y-6500D02*Y-8750D01*
+X427775Y-9500D01*
+X424775D02*X426275D01*
+X427025Y-8750D01*
+X430325Y-7250D02*Y-9500D01*
+Y-7250D02*X431075Y-6500D01*
+X432575D01*
+X429575D02*X430325Y-7250D01*
+X437375Y-3500D02*Y-9500D01*
+X436625D02*X437375Y-8750D01*
+X435125Y-9500D02*X436625D01*
+X434375Y-8750D02*X435125Y-9500D01*
+X434375Y-7250D02*Y-8750D01*
+Y-7250D02*X435125Y-6500D01*
+X436625D01*
+X437375Y-7250D01*
+X441875D02*Y-8750D01*
+Y-7250D02*X442625Y-6500D01*
+X444125D01*
+X444875Y-7250D01*
+Y-8750D01*
+X444125Y-9500D02*X444875Y-8750D01*
+X442625Y-9500D02*X444125D01*
+X441875Y-8750D02*X442625Y-9500D01*
+X446675Y-6500D02*Y-8750D01*
+X447425Y-9500D01*
+X448925D01*
+X449675Y-8750D01*
+Y-6500D02*Y-8750D01*
+X452225Y-3500D02*Y-8750D01*
+X452975Y-9500D01*
+X451475Y-5750D02*X452975D01*
+X454475Y-3500D02*Y-8750D01*
+X455225Y-9500D01*
+G54D114*X456725Y-5000D02*Y-5150D01*
+G54D113*Y-7250D02*Y-9500D01*
+X458975Y-7250D02*Y-9500D01*
+Y-7250D02*X459725Y-6500D01*
+X460475D01*
+X461225Y-7250D01*
+Y-9500D01*
+X458225Y-6500D02*X458975Y-7250D01*
+X463775Y-9500D02*X466025D01*
+X463025Y-8750D02*X463775Y-9500D01*
+X463025Y-7250D02*Y-8750D01*
+Y-7250D02*X463775Y-6500D01*
+X465275D01*
+X466025Y-7250D01*
+X463025Y-8000D02*X466025D01*
+Y-7250D02*Y-8000D01*
+G54D114*X470525Y-5000D02*Y-5150D01*
+G54D113*Y-7250D02*Y-9500D01*
+X472775D02*X475025D01*
+X475775Y-8750D01*
+X475025Y-8000D02*X475775Y-8750D01*
+X472775Y-8000D02*X475025D01*
+X472025Y-7250D02*X472775Y-8000D01*
+X472025Y-7250D02*X472775Y-6500D01*
+X475025D01*
+X475775Y-7250D01*
+X472025Y-8750D02*X472775Y-9500D01*
+X481025Y-3500D02*Y-8750D01*
+X481775Y-9500D01*
+X480275Y-5750D02*X481775D01*
+X483275Y-3500D02*Y-9500D01*
+Y-7250D02*X484025Y-6500D01*
+X485525D01*
+X486275Y-7250D01*
+Y-9500D01*
+X488825D02*X491075D01*
+X488075Y-8750D02*X488825Y-9500D01*
+X488075Y-7250D02*Y-8750D01*
+Y-7250D02*X488825Y-6500D01*
+X490325D01*
+X491075Y-7250D01*
+X488075Y-8000D02*X491075D01*
+Y-7250D02*Y-8000D01*
+X496325Y-6500D02*X498575D01*
+X495575Y-7250D02*X496325Y-6500D01*
+X495575Y-7250D02*Y-8750D01*
+X496325Y-9500D01*
+X498575D01*
+X501125D02*X503375D01*
+X500375Y-8750D02*X501125Y-9500D01*
+X500375Y-7250D02*Y-8750D01*
+Y-7250D02*X501125Y-6500D01*
+X502625D01*
+X503375Y-7250D01*
+X500375Y-8000D02*X503375D01*
+Y-7250D02*Y-8000D01*
+X505925Y-7250D02*Y-9500D01*
+Y-7250D02*X506675Y-6500D01*
+X507425D01*
+X508175Y-7250D01*
+Y-9500D01*
+X505175Y-6500D02*X505925Y-7250D01*
+X510725Y-3500D02*Y-8750D01*
+X511475Y-9500D01*
+X509975Y-5750D02*X511475D01*
+X513725Y-9500D02*X515975D01*
+X512975Y-8750D02*X513725Y-9500D01*
+X512975Y-7250D02*Y-8750D01*
+Y-7250D02*X513725Y-6500D01*
+X515225D01*
+X515975Y-7250D01*
+X512975Y-8000D02*X515975D01*
+Y-7250D02*Y-8000D01*
+X518525Y-7250D02*Y-9500D01*
+Y-7250D02*X519275Y-6500D01*
+X520775D01*
+X517775D02*X518525Y-7250D01*
+X522575Y-3500D02*Y-8750D01*
+X523325Y-9500D01*
+G54D114*X524825Y-5000D02*Y-5150D01*
+G54D113*Y-7250D02*Y-9500D01*
+X527075Y-7250D02*Y-9500D01*
+Y-7250D02*X527825Y-6500D01*
+X528575D01*
+X529325Y-7250D01*
+Y-9500D01*
+X526325Y-6500D02*X527075Y-7250D01*
+X531875Y-9500D02*X534125D01*
+X531125Y-8750D02*X531875Y-9500D01*
+X531125Y-7250D02*Y-8750D01*
+Y-7250D02*X531875Y-6500D01*
+X533375D01*
+X534125Y-7250D01*
+X531125Y-8000D02*X534125D01*
+Y-7250D02*Y-8000D01*
+X538625Y-7250D02*Y-8750D01*
+Y-7250D02*X539375Y-6500D01*
+X540875D01*
+X541625Y-7250D01*
+Y-8750D01*
+X540875Y-9500D02*X541625Y-8750D01*
+X539375Y-9500D02*X540875D01*
+X538625Y-8750D02*X539375Y-9500D01*
+X544175Y-4250D02*Y-9500D01*
+Y-4250D02*X544925Y-3500D01*
+X545675D01*
+X543425Y-6500D02*X544925D01*
+X550625Y-3500D02*Y-8750D01*
+X551375Y-9500D01*
+X549875Y-5750D02*X551375D01*
+X552875Y-3500D02*Y-9500D01*
+Y-7250D02*X553625Y-6500D01*
+X555125D01*
+X555875Y-7250D01*
+Y-9500D01*
+G54D114*X557675Y-5000D02*Y-5150D01*
+G54D113*Y-7250D02*Y-9500D01*
+X559925D02*X562175D01*
+X562925Y-8750D01*
+X562175Y-8000D02*X562925Y-8750D01*
+X559925Y-8000D02*X562175D01*
+X559175Y-7250D02*X559925Y-8000D01*
+X559175Y-7250D02*X559925Y-6500D01*
+X562175D01*
+X562925Y-7250D01*
+X559175Y-8750D02*X559925Y-9500D01*
+X568175Y-7250D02*Y-11750D01*
+X567425Y-6500D02*X568175Y-7250D01*
+X568925Y-6500D01*
+X570425D01*
+X571175Y-7250D01*
+Y-8750D01*
+X570425Y-9500D02*X571175Y-8750D01*
+X568925Y-9500D02*X570425D01*
+X568175Y-8750D02*X568925Y-9500D01*
+X575225Y-6500D02*X575975Y-7250D01*
+X573725Y-6500D02*X575225D01*
+X572975Y-7250D02*X573725Y-6500D01*
+X572975Y-7250D02*Y-8750D01*
+X573725Y-9500D01*
+X575975Y-6500D02*Y-8750D01*
+X576725Y-9500D01*
+X573725D02*X575225D01*
+X575975Y-8750D01*
+X579275Y-3500D02*Y-8750D01*
+X580025Y-9500D01*
+X578525Y-5750D02*X580025D01*
+X581525Y-3500D02*Y-9500D01*
+Y-7250D02*X582275Y-6500D01*
+X583775D01*
+X584525Y-7250D01*
+Y-9500D01*
+X200750Y1028500D02*Y1022500D01*
+X202700Y1028500D02*X203750Y1027450D01*
+Y1023550D01*
+X202700Y1022500D02*X203750Y1023550D01*
+X200000Y1022500D02*X202700D01*
+X200000Y1028500D02*X202700D01*
+X207800Y1025500D02*X208550Y1024750D01*
+X206300Y1025500D02*X207800D01*
+X205550Y1024750D02*X206300Y1025500D01*
+X205550Y1024750D02*Y1023250D01*
+X206300Y1022500D01*
+X208550Y1025500D02*Y1023250D01*
+X209300Y1022500D01*
+X206300D02*X207800D01*
+X208550Y1023250D01*
+X211850Y1028500D02*Y1023250D01*
+X212600Y1022500D01*
+X211100Y1026250D02*X212600D01*
+X214850Y1022500D02*X217100D01*
+X214100Y1023250D02*X214850Y1022500D01*
+X214100Y1024750D02*Y1023250D01*
+Y1024750D02*X214850Y1025500D01*
+X216350D01*
+X217100Y1024750D01*
+X214100Y1024000D02*X217100D01*
+Y1024750D02*Y1024000D01*
+X218900Y1026250D02*X219650D01*
+X218900Y1024750D02*X219650D01*
+X227150Y1028500D02*X227900Y1027750D01*
+X224900Y1028500D02*X227150D01*
+X224150Y1027750D02*X224900Y1028500D01*
+X224150Y1027750D02*Y1026250D01*
+X224900Y1025500D01*
+X227150D01*
+X227900Y1024750D01*
+Y1023250D01*
+X227150Y1022500D02*X227900Y1023250D01*
+X224900Y1022500D02*X227150D01*
+X224150Y1023250D02*X224900Y1022500D01*
+X229700Y1025500D02*Y1023250D01*
+X230450Y1022500D01*
+X231950D01*
+X232700Y1023250D01*
+Y1025500D02*Y1023250D01*
+X235250Y1024750D02*Y1022500D01*
+Y1024750D02*X236000Y1025500D01*
+X236750D01*
+X237500Y1024750D01*
+Y1022500D01*
+X234500Y1025500D02*X235250Y1024750D01*
+X243050Y1028500D02*X244250D01*
+Y1023250D01*
+X243500Y1022500D02*X244250Y1023250D01*
+X242750Y1022500D02*X243500D01*
+X242000Y1023250D02*X242750Y1022500D01*
+X242000Y1024000D02*Y1023250D01*
+X248300Y1025500D02*X249050Y1024750D01*
+X246800Y1025500D02*X248300D01*
+X246050Y1024750D02*X246800Y1025500D01*
+X246050Y1024750D02*Y1023250D01*
+X246800Y1022500D01*
+X249050Y1025500D02*Y1023250D01*
+X249800Y1022500D01*
+X246800D02*X248300D01*
+X249050Y1023250D01*
+X252350Y1024750D02*Y1022500D01*
+Y1024750D02*X253100Y1025500D01*
+X253850D01*
+X254600Y1024750D01*
+Y1022500D01*
+X251600Y1025500D02*X252350Y1024750D01*
+X259100Y1027750D02*X259850Y1028500D01*
+X262100D01*
+X262850Y1027750D01*
+Y1026250D01*
+X259100Y1022500D02*X262850Y1026250D01*
+X259100Y1022500D02*X262850D01*
+X264650Y1027750D02*X265400Y1028500D01*
+X266900D01*
+X267650Y1027750D01*
+X266900Y1022500D02*X267650Y1023250D01*
+X265400Y1022500D02*X266900D01*
+X264650Y1023250D02*X265400Y1022500D01*
+Y1025800D02*X266900D01*
+X267650Y1027750D02*Y1026550D01*
+Y1025050D02*Y1023250D01*
+Y1025050D02*X266900Y1025800D01*
+X267650Y1026550D02*X266900Y1025800D01*
+X272150Y1023250D02*X272900Y1022500D01*
+X272150Y1027750D02*Y1023250D01*
+Y1027750D02*X272900Y1028500D01*
+X274400D01*
+X275150Y1027750D01*
+Y1023250D01*
+X274400Y1022500D02*X275150Y1023250D01*
+X272900Y1022500D02*X274400D01*
+X272150Y1024000D02*X275150Y1027000D01*
+X276950Y1023250D02*X277700Y1022500D01*
+X276950Y1027750D02*Y1023250D01*
+Y1027750D02*X277700Y1028500D01*
+X279200D01*
+X279950Y1027750D01*
+Y1023250D01*
+X279200Y1022500D02*X279950Y1023250D01*
+X277700Y1022500D02*X279200D01*
+X276950Y1024000D02*X279950Y1027000D01*
+X281750Y1026250D02*X282500D01*
+X281750Y1024750D02*X282500D01*
+X284300Y1027750D02*X285050Y1028500D01*
+X287300D01*
+X288050Y1027750D01*
+Y1026250D01*
+X284300Y1022500D02*X288050Y1026250D01*
+X284300Y1022500D02*X288050D01*
+X289850Y1028500D02*X292850D01*
+X289850D02*Y1025500D01*
+X290600Y1026250D01*
+X292100D01*
+X292850Y1025500D01*
+Y1023250D01*
+X292100Y1022500D02*X292850Y1023250D01*
+X290600Y1022500D02*X292100D01*
+X289850Y1023250D02*X290600Y1022500D01*
+X294650Y1026250D02*X295400D01*
+X294650Y1024750D02*X295400D01*
+X297200Y1027750D02*X297950Y1028500D01*
+X300200D01*
+X300950Y1027750D01*
+Y1026250D01*
+X297200Y1022500D02*X300950Y1026250D01*
+X297200Y1022500D02*X300950D01*
+X303500D02*X306500Y1028500D01*
+X302750D02*X306500D01*
+X311000Y1027750D02*X311750Y1028500D01*
+X314000D01*
+X314750Y1027750D01*
+Y1026250D01*
+X311000Y1022500D02*X314750Y1026250D01*
+X311000Y1022500D02*X314750D01*
+X316550Y1023250D02*X317300Y1022500D01*
+X316550Y1027750D02*Y1023250D01*
+Y1027750D02*X317300Y1028500D01*
+X318800D01*
+X319550Y1027750D01*
+Y1023250D01*
+X318800Y1022500D02*X319550Y1023250D01*
+X317300Y1022500D02*X318800D01*
+X316550Y1024000D02*X319550Y1027000D01*
+X321350Y1027750D02*X322100Y1028500D01*
+X324350D01*
+X325100Y1027750D01*
+Y1026250D01*
+X321350Y1022500D02*X325100Y1026250D01*
+X321350Y1022500D02*X325100D01*
+X326900Y1027750D02*X327650Y1028500D01*
+X329900D01*
+X330650Y1027750D01*
+Y1026250D01*
+X326900Y1022500D02*X330650Y1026250D01*
+X326900Y1022500D02*X330650D01*
+X335150Y1028500D02*Y1023250D01*
+X335900Y1022500D01*
+X337400D01*
+X338150Y1023250D01*
+Y1028500D02*Y1023250D01*
+X339950Y1028500D02*X342950D01*
+X341450D02*Y1022500D01*
+X345800D02*X347750D01*
+X344750Y1023550D02*X345800Y1022500D01*
+X344750Y1027450D02*Y1023550D01*
+Y1027450D02*X345800Y1028500D01*
+X347750D01*
+X200000Y1042000D02*Y1037500D01*
+Y1042000D02*X201050Y1043500D01*
+X202700D01*
+X203750Y1042000D01*
+Y1037500D01*
+X200000Y1040500D02*X203750D01*
+X205550D02*Y1038250D01*
+X206300Y1037500D01*
+X207800D01*
+X208550Y1038250D01*
+Y1040500D02*Y1038250D01*
+X211100Y1043500D02*Y1038250D01*
+X211850Y1037500D01*
+X210350Y1041250D02*X211850D01*
+X213350Y1043500D02*Y1037500D01*
+Y1039750D02*X214100Y1040500D01*
+X215600D01*
+X216350Y1039750D01*
+Y1037500D01*
+X218150Y1039750D02*Y1038250D01*
+Y1039750D02*X218900Y1040500D01*
+X220400D01*
+X221150Y1039750D01*
+Y1038250D01*
+X220400Y1037500D02*X221150Y1038250D01*
+X218900Y1037500D02*X220400D01*
+X218150Y1038250D02*X218900Y1037500D01*
+X223700Y1039750D02*Y1037500D01*
+Y1039750D02*X224450Y1040500D01*
+X225950D01*
+X222950D02*X223700Y1039750D01*
+X227750Y1041250D02*X228500D01*
+X227750Y1039750D02*X228500D01*
+X233750Y1043500D02*Y1037500D01*
+X235700Y1043500D02*X236750Y1042450D01*
+Y1038550D01*
+X235700Y1037500D02*X236750Y1038550D01*
+X233000Y1037500D02*X235700D01*
+X233000Y1043500D02*X235700D01*
+X239300Y1037500D02*X241550D01*
+X238550Y1038250D02*X239300Y1037500D01*
+X238550Y1039750D02*Y1038250D01*
+Y1039750D02*X239300Y1040500D01*
+X240800D01*
+X241550Y1039750D01*
+X238550Y1039000D02*X241550D01*
+Y1039750D02*Y1039000D01*
+X243350Y1043500D02*Y1037500D01*
+Y1038250D02*X244100Y1037500D01*
+X245600D01*
+X246350Y1038250D01*
+Y1039750D02*Y1038250D01*
+X245600Y1040500D02*X246350Y1039750D01*
+X244100Y1040500D02*X245600D01*
+X243350Y1039750D02*X244100Y1040500D01*
+G54D114*X248150Y1042000D02*Y1041850D01*
+G54D113*Y1039750D02*Y1037500D01*
+X251900Y1040500D02*X252650Y1039750D01*
+X250400Y1040500D02*X251900D01*
+X249650Y1039750D02*X250400Y1040500D01*
+X249650Y1039750D02*Y1038250D01*
+X250400Y1037500D01*
+X252650Y1040500D02*Y1038250D01*
+X253400Y1037500D01*
+X250400D02*X251900D01*
+X252650Y1038250D01*
+X255950Y1039750D02*Y1037500D01*
+Y1039750D02*X256700Y1040500D01*
+X257450D01*
+X258200Y1039750D01*
+Y1037500D01*
+X255200Y1040500D02*X255950Y1039750D01*
+X200000Y1058500D02*X203000D01*
+X201500D02*Y1052500D01*
+G54D114*X204800Y1057000D02*Y1056850D01*
+G54D113*Y1054750D02*Y1052500D01*
+X207050Y1058500D02*Y1053250D01*
+X207800Y1052500D01*
+X206300Y1056250D02*X207800D01*
+X209300Y1058500D02*Y1053250D01*
+X210050Y1052500D01*
+X212300D02*X214550D01*
+X211550Y1053250D02*X212300Y1052500D01*
+X211550Y1054750D02*Y1053250D01*
+Y1054750D02*X212300Y1055500D01*
+X213800D01*
+X214550Y1054750D01*
+X211550Y1054000D02*X214550D01*
+Y1054750D02*Y1054000D01*
+X216350Y1056250D02*X217100D01*
+X216350Y1054750D02*X217100D01*
+X221600Y1058500D02*X224600D01*
+X225350Y1057750D01*
+Y1056250D01*
+X224600Y1055500D02*X225350Y1056250D01*
+X222350Y1055500D02*X224600D01*
+X222350Y1058500D02*Y1052500D01*
+X223550Y1055500D02*X225350Y1052500D01*
+X227900D02*X230150D01*
+X230900Y1053250D01*
+X230150Y1054000D02*X230900Y1053250D01*
+X227900Y1054000D02*X230150D01*
+X227150Y1054750D02*X227900Y1054000D01*
+X227150Y1054750D02*X227900Y1055500D01*
+X230150D01*
+X230900Y1054750D01*
+X227150Y1053250D02*X227900Y1052500D01*
+X233450Y1054750D02*Y1050250D01*
+X232700Y1055500D02*X233450Y1054750D01*
+X234200Y1055500D01*
+X235700D01*
+X236450Y1054750D01*
+Y1053250D01*
+X235700Y1052500D02*X236450Y1053250D01*
+X234200Y1052500D02*X235700D01*
+X233450Y1053250D02*X234200Y1052500D01*
+X239000Y1058500D02*Y1052500D01*
+X238250Y1058500D02*X241250D01*
+X242000Y1057750D01*
+Y1056250D01*
+X241250Y1055500D02*X242000Y1056250D01*
+X239000Y1055500D02*X241250D01*
+G54D114*X243800Y1057000D02*Y1056850D01*
+G54D113*Y1054750D02*Y1052500D01*
+X246050Y1058500D02*Y1052500D01*
+X245300Y1058500D02*X248300D01*
+X249050Y1057750D01*
+Y1056250D01*
+X248300Y1055500D02*X249050Y1056250D01*
+X246050Y1055500D02*X248300D01*
+X253850Y1058500D02*X254600Y1057750D01*
+X251600Y1058500D02*X253850D01*
+X250850Y1057750D02*X251600Y1058500D01*
+X250850Y1057750D02*Y1056250D01*
+X251600Y1055500D01*
+X253850D01*
+X254600Y1054750D01*
+Y1053250D01*
+X253850Y1052500D02*X254600Y1053250D01*
+X251600Y1052500D02*X253850D01*
+X250850Y1053250D02*X251600Y1052500D01*
+X259100Y1055500D02*X262100D01*
+X266600Y1058500D02*Y1052500D01*
+Y1058500D02*X269600D01*
+X266600Y1055800D02*X268850D01*
+X273650Y1055500D02*X274400Y1054750D01*
+X272150Y1055500D02*X273650D01*
+X271400Y1054750D02*X272150Y1055500D01*
+X271400Y1054750D02*Y1053250D01*
+X272150Y1052500D01*
+X274400Y1055500D02*Y1053250D01*
+X275150Y1052500D01*
+X272150D02*X273650D01*
+X274400Y1053250D01*
+X276950Y1058500D02*Y1052500D01*
+Y1053250D02*X277700Y1052500D01*
+X279200D01*
+X279950Y1053250D01*
+Y1054750D02*Y1053250D01*
+X279200Y1055500D02*X279950Y1054750D01*
+X277700Y1055500D02*X279200D01*
+X276950Y1054750D02*X277700Y1055500D01*
+X282500Y1054750D02*Y1052500D01*
+Y1054750D02*X283250Y1055500D01*
+X284750D01*
+X281750D02*X282500Y1054750D01*
+G54D114*X286550Y1057000D02*Y1056850D01*
+G54D113*Y1054750D02*Y1052500D01*
+X288800Y1055500D02*X291050D01*
+X288050Y1054750D02*X288800Y1055500D01*
+X288050Y1054750D02*Y1053250D01*
+X288800Y1052500D01*
+X291050D01*
+X295100Y1055500D02*X295850Y1054750D01*
+X293600Y1055500D02*X295100D01*
+X292850Y1054750D02*X293600Y1055500D01*
+X292850Y1054750D02*Y1053250D01*
+X293600Y1052500D01*
+X295850Y1055500D02*Y1053250D01*
+X296600Y1052500D01*
+X293600D02*X295100D01*
+X295850Y1053250D01*
+X299150Y1058500D02*Y1053250D01*
+X299900Y1052500D01*
+X298400Y1056250D02*X299900D01*
+G54D114*X301400Y1057000D02*Y1056850D01*
+G54D113*Y1054750D02*Y1052500D01*
+X302900Y1054750D02*Y1053250D01*
+Y1054750D02*X303650Y1055500D01*
+X305150D01*
+X305900Y1054750D01*
+Y1053250D01*
+X305150Y1052500D02*X305900Y1053250D01*
+X303650Y1052500D02*X305150D01*
+X302900Y1053250D02*X303650Y1052500D01*
+X308450Y1054750D02*Y1052500D01*
+Y1054750D02*X309200Y1055500D01*
+X309950D01*
+X310700Y1054750D01*
+Y1052500D01*
+X307700Y1055500D02*X308450Y1054750D01*
+X315950Y1058500D02*Y1052500D01*
+X317900Y1058500D02*X318950Y1057450D01*
+Y1053550D01*
+X317900Y1052500D02*X318950Y1053550D01*
+X315200Y1052500D02*X317900D01*
+X315200Y1058500D02*X317900D01*
+X321500Y1054750D02*Y1052500D01*
+Y1054750D02*X322250Y1055500D01*
+X323750D01*
+X320750D02*X321500Y1054750D01*
+X327800Y1055500D02*X328550Y1054750D01*
+X326300Y1055500D02*X327800D01*
+X325550Y1054750D02*X326300Y1055500D01*
+X325550Y1054750D02*Y1053250D01*
+X326300Y1052500D01*
+X328550Y1055500D02*Y1053250D01*
+X329300Y1052500D01*
+X326300D02*X327800D01*
+X328550Y1053250D01*
+X331100Y1055500D02*Y1053250D01*
+X331850Y1052500D01*
+X332600D01*
+X333350Y1053250D01*
+Y1055500D02*Y1053250D01*
+X334100Y1052500D01*
+X334850D01*
+X335600Y1053250D01*
+Y1055500D02*Y1053250D01*
+G54D114*X337400Y1057000D02*Y1056850D01*
+G54D113*Y1054750D02*Y1052500D01*
+X339650Y1054750D02*Y1052500D01*
+Y1054750D02*X340400Y1055500D01*
+X341150D01*
+X341900Y1054750D01*
+Y1052500D01*
+X338900Y1055500D02*X339650Y1054750D01*
+X345950Y1055500D02*X346700Y1054750D01*
+X344450Y1055500D02*X345950D01*
+X343700Y1054750D02*X344450Y1055500D01*
+X343700Y1054750D02*Y1053250D01*
+X344450Y1052500D01*
+X345950D01*
+X346700Y1053250D01*
+X343700Y1051000D02*X344450Y1050250D01*
+X345950D01*
+X346700Y1051000D01*
+Y1055500D02*Y1051000D01*
+M02*
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.group5.gbr b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.group5.gbr
new file mode 100644
index 0000000..1988ed1
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.group5.gbr
@@ -0,0 +1,517 @@
+G04 start of page 5 for group 5 idx 2 *
+G04 Title: RspPiPS, mechanical *
+G04 Creator: pcb 4.2.0 *
+G04 CreationDate: Sun Jan 23 00:25:27 2022 UTC *
+G04 For: debian *
+G04 Format: Gerber/RS-274X *
+G04 PCB-Dimensions (mil): 10000.00 10000.00 *
+G04 PCB-Coordinate-Origin: lower left *
+%MOIN*%
+%FSLAX25Y25*%
+%LNGROUP5*%
+%ADD77C,0.0380*%
+%ADD76C,0.0453*%
+%ADD75C,0.0400*%
+%ADD74C,0.0354*%
+%ADD73C,0.1181*%
+%ADD72C,0.0402*%
+%ADD71C,0.1063*%
+%ADD70C,0.0200*%
+%ADD69C,0.0350*%
+%ADD68C,0.0360*%
+%ADD67C,0.0600*%
+%ADD66C,0.0768*%
+%ADD65C,0.0800*%
+%ADD64C,0.0630*%
+%ADD63C,0.0620*%
+%ADD62C,0.0001*%
+%ADD61C,0.2362*%
+%ADD60C,0.0060*%
+%ADD59C,0.0100*%
+G54D59*X141732Y791339D02*Y529528D01*
+G54D60*Y566929D02*X133858D01*
+X155512Y568898D02*Y541339D01*
+Y568898D02*X125984D01*
+X141732Y533465D02*X143701Y535433D01*
+X141732Y533465D02*X143701Y531496D01*
+G54D59*X129921Y775591D02*X509843D01*
+G54D60*X476378Y763780D02*X486220D01*
+X476378Y566929D02*X490157D01*
+X174700Y756800D02*X173806Y755906D01*
+G54D59*X476383Y789657D02*Y527846D01*
+X120079Y555118D02*X509843D01*
+G54D60*X383858Y568898D02*Y541339D01*
+X155512Y761811D02*X129921D01*
+X174700Y756800D02*X129027D01*
+G54D59*X108268Y776559D02*X110268D01*
+X108268D02*Y774559D01*
+X108768Y775059D01*
+X109768D01*
+X110268Y774559D01*
+Y773059D01*
+X109768Y772559D02*X110268Y773059D01*
+X108768Y772559D02*X109768D01*
+X108268Y773059D02*X108768Y772559D01*
+X112968Y776559D02*X113468Y776059D01*
+X111968Y776559D02*X112968D01*
+X111468Y776059D02*X111968Y776559D01*
+X111468Y776059D02*Y773059D01*
+X111968Y772559D01*
+X112968Y774759D02*X113468Y774259D01*
+X111468Y774759D02*X112968D01*
+X111968Y772559D02*X112968D01*
+X113468Y773059D01*
+Y774259D02*Y773059D01*
+X114668Y772559D02*X115168D01*
+X116368Y773059D02*X116868Y772559D01*
+X116368Y776059D02*Y773059D01*
+Y776059D02*X116868Y776559D01*
+X117868D01*
+X118368Y776059D01*
+Y773059D01*
+X117868Y772559D02*X118368Y773059D01*
+X116868Y772559D02*X117868D01*
+X116368Y773559D02*X118368Y775559D01*
+X120068Y774059D02*Y772559D01*
+Y774059D02*X120568Y774559D01*
+X121068D01*
+X121568Y774059D01*
+Y772559D01*
+Y774059D02*X122068Y774559D01*
+X122568D01*
+X123068Y774059D01*
+Y772559D01*
+X119568Y774559D02*X120068Y774059D01*
+X124768D02*Y772559D01*
+Y774059D02*X125268Y774559D01*
+X125768D01*
+X126268Y774059D01*
+Y772559D01*
+Y774059D02*X126768Y774559D01*
+X127268D01*
+X127768Y774059D01*
+Y772559D01*
+X124268Y774559D02*X124768Y774059D01*
+X108268Y764748D02*X110268D01*
+X108268D02*Y762748D01*
+X108768Y763248D01*
+X109768D01*
+X110268Y762748D01*
+Y761248D01*
+X109768Y760748D02*X110268Y761248D01*
+X108768Y760748D02*X109768D01*
+X108268Y761248D02*X108768Y760748D01*
+X111468Y764248D02*X111968Y764748D01*
+X113468D01*
+X113968Y764248D01*
+Y763248D01*
+X111468Y760748D02*X113968Y763248D01*
+X111468Y760748D02*X113968D01*
+X115168D02*X115668D01*
+X116868Y764748D02*X118868D01*
+X116868D02*Y762748D01*
+X117368Y763248D01*
+X118368D01*
+X118868Y762748D01*
+Y761248D01*
+X118368Y760748D02*X118868Y761248D01*
+X117368Y760748D02*X118368D01*
+X116868Y761248D02*X117368Y760748D01*
+X120568Y762248D02*Y760748D01*
+Y762248D02*X121068Y762748D01*
+X121568D01*
+X122068Y762248D01*
+Y760748D01*
+Y762248D02*X122568Y762748D01*
+X123068D01*
+X123568Y762248D01*
+Y760748D01*
+X120068Y762748D02*X120568Y762248D01*
+X125268D02*Y760748D01*
+Y762248D02*X125768Y762748D01*
+X126268D01*
+X126768Y762248D01*
+Y760748D01*
+Y762248D02*X127268Y762748D01*
+X127768D01*
+X128268Y762248D01*
+Y760748D01*
+X124768Y762748D02*X125268Y762248D01*
+X149606Y539839D02*X150106Y540339D01*
+X151106D01*
+X151606Y539839D01*
+X151106Y536339D02*X151606Y536839D01*
+X150106Y536339D02*X151106D01*
+X149606Y536839D02*X150106Y536339D01*
+Y538539D02*X151106D01*
+X151606Y539839D02*Y539039D01*
+Y538039D02*Y536839D01*
+Y538039D02*X151106Y538539D01*
+X151606Y539039D02*X151106Y538539D01*
+X152806Y536339D02*X153306D01*
+X154506Y540339D02*X156506D01*
+X154506D02*Y538339D01*
+X155006Y538839D01*
+X156006D01*
+X156506Y538339D01*
+Y536839D01*
+X156006Y536339D02*X156506Y536839D01*
+X155006Y536339D02*X156006D01*
+X154506Y536839D02*X155006Y536339D01*
+X158206Y537839D02*Y536339D01*
+Y537839D02*X158706Y538339D01*
+X159206D01*
+X159706Y537839D01*
+Y536339D01*
+Y537839D02*X160206Y538339D01*
+X160706D01*
+X161206Y537839D01*
+Y536339D01*
+X157706Y538339D02*X158206Y537839D01*
+X162906D02*Y536339D01*
+Y537839D02*X163406Y538339D01*
+X163906D01*
+X164406Y537839D01*
+Y536339D01*
+Y537839D02*X164906Y538339D01*
+X165406D01*
+X165906Y537839D01*
+Y536339D01*
+X162406Y538339D02*X162906Y537839D01*
+X135827Y523059D02*X136327Y522559D01*
+X135827Y526059D02*Y523059D01*
+Y526059D02*X136327Y526559D01*
+X137327D01*
+X137827Y526059D01*
+Y523059D01*
+X137327Y522559D02*X137827Y523059D01*
+X136327Y522559D02*X137327D01*
+X135827Y523559D02*X137827Y525559D01*
+X139527Y524059D02*Y522559D01*
+Y524059D02*X140027Y524559D01*
+X140527D01*
+X141027Y524059D01*
+Y522559D01*
+Y524059D02*X141527Y524559D01*
+X142027D01*
+X142527Y524059D01*
+Y522559D01*
+X139027Y524559D02*X139527Y524059D01*
+X144227D02*Y522559D01*
+Y524059D02*X144727Y524559D01*
+X145227D01*
+X145727Y524059D01*
+Y522559D01*
+Y524059D02*X146227Y524559D01*
+X146727D01*
+X147227Y524059D01*
+Y522559D01*
+X143727Y524559D02*X144227Y524059D01*
+X106299Y552587D02*X106799Y552087D01*
+X106299Y555587D02*Y552587D01*
+Y555587D02*X106799Y556087D01*
+X107799D01*
+X108299Y555587D01*
+Y552587D01*
+X107799Y552087D02*X108299Y552587D01*
+X106799Y552087D02*X107799D01*
+X106299Y553087D02*X108299Y555087D01*
+X109999Y553587D02*Y552087D01*
+Y553587D02*X110499Y554087D01*
+X110999D01*
+X111499Y553587D01*
+Y552087D01*
+Y553587D02*X111999Y554087D01*
+X112499D01*
+X112999Y553587D01*
+Y552087D01*
+X109499Y554087D02*X109999Y553587D01*
+X114699D02*Y552087D01*
+Y553587D02*X115199Y554087D01*
+X115699D01*
+X116199Y553587D01*
+Y552087D01*
+Y553587D02*X116699Y554087D01*
+X117199D01*
+X117699Y553587D01*
+Y552087D01*
+X114199Y554087D02*X114699Y553587D01*
+X379453Y540339D02*X379953Y539839D01*
+X378453Y540339D02*X379453D01*
+X377953Y539839D02*X378453Y540339D01*
+X377953Y539839D02*Y536839D01*
+X378453Y536339D01*
+X379453Y538539D02*X379953Y538039D01*
+X377953Y538539D02*X379453D01*
+X378453Y536339D02*X379453D01*
+X379953Y536839D01*
+Y538039D02*Y536839D01*
+X381153Y539539D02*X381953Y540339D01*
+Y536339D01*
+X381153D02*X382653D01*
+X383853D02*X384353D01*
+X385553Y540339D02*X387553D01*
+X385553D02*Y538339D01*
+X386053Y538839D01*
+X387053D01*
+X387553Y538339D01*
+Y536839D01*
+X387053Y536339D02*X387553Y536839D01*
+X386053Y536339D02*X387053D01*
+X385553Y536839D02*X386053Y536339D01*
+X389253Y537839D02*Y536339D01*
+Y537839D02*X389753Y538339D01*
+X390253D01*
+X390753Y537839D01*
+Y536339D01*
+Y537839D02*X391253Y538339D01*
+X391753D01*
+X392253Y537839D01*
+Y536339D01*
+X388753Y538339D02*X389253Y537839D01*
+X393953D02*Y536339D01*
+Y537839D02*X394453Y538339D01*
+X394953D01*
+X395453Y537839D01*
+Y536339D01*
+Y537839D02*X395953Y538339D01*
+X396453D01*
+X396953Y537839D01*
+Y536339D01*
+X393453Y538339D02*X393953Y537839D01*
+X108268Y569366D02*X108768Y569866D01*
+X109768D01*
+X110268Y569366D01*
+X109768Y565866D02*X110268Y566366D01*
+X108768Y565866D02*X109768D01*
+X108268Y566366D02*X108768Y565866D01*
+Y568066D02*X109768D01*
+X110268Y569366D02*Y568566D01*
+Y567566D02*Y566366D01*
+Y567566D02*X109768Y568066D01*
+X110268Y568566D02*X109768Y568066D01*
+X111468Y565866D02*X111968D01*
+X113168Y569866D02*X115168D01*
+X113168D02*Y567866D01*
+X113668Y568366D01*
+X114668D01*
+X115168Y567866D01*
+Y566366D01*
+X114668Y565866D02*X115168Y566366D01*
+X113668Y565866D02*X114668D01*
+X113168Y566366D02*X113668Y565866D01*
+X116868Y567366D02*Y565866D01*
+Y567366D02*X117368Y567866D01*
+X117868D01*
+X118368Y567366D01*
+Y565866D01*
+Y567366D02*X118868Y567866D01*
+X119368D01*
+X119868Y567366D01*
+Y565866D01*
+X116368Y567866D02*X116868Y567366D01*
+X121568D02*Y565866D01*
+Y567366D02*X122068Y567866D01*
+X122568D01*
+X123068Y567366D01*
+Y565866D01*
+Y567366D02*X123568Y567866D01*
+X124068D01*
+X124568Y567366D01*
+Y565866D01*
+X121068Y567866D02*X121568Y567366D01*
+X469800Y521690D02*X470290Y521200D01*
+X469800Y522474D02*Y521690D01*
+Y522474D02*X470486Y523160D01*
+X471074D01*
+X471760Y522474D01*
+Y521690D01*
+X471270Y521200D02*X471760Y521690D01*
+X470290Y521200D02*X471270D01*
+X469800Y523846D02*X470486Y523160D01*
+X469800Y524630D02*Y523846D01*
+Y524630D02*X470290Y525120D01*
+X471270D01*
+X471760Y524630D01*
+Y523846D01*
+X471074Y523160D02*X471760Y523846D01*
+X472936Y525120D02*X474896D01*
+X472936D02*Y523160D01*
+X473426Y523650D01*
+X474406D01*
+X474896Y523160D01*
+Y521690D01*
+X474406Y521200D02*X474896Y521690D01*
+X473426Y521200D02*X474406D01*
+X472936Y521690D02*X473426Y521200D01*
+X476562Y522670D02*Y521200D01*
+Y522670D02*X477052Y523160D01*
+X477542D01*
+X478032Y522670D01*
+Y521200D01*
+Y522670D02*X478522Y523160D01*
+X479012D01*
+X479502Y522670D01*
+Y521200D01*
+X476072Y523160D02*X476562Y522670D01*
+X481168D02*Y521200D01*
+Y522670D02*X481658Y523160D01*
+X482148D01*
+X482638Y522670D01*
+Y521200D01*
+Y522670D02*X483128Y523160D01*
+X483618D01*
+X484108Y522670D01*
+Y521200D01*
+X480678Y523160D02*X481168Y522670D01*
+G54D61*X383858Y761811D03*
+G54D62*G36*
+X438361Y753246D02*Y747046D01*
+X444561D01*
+Y753246D01*
+X438361D01*
+G37*
+G54D63*X441461Y738335D03*
+Y726524D03*
+Y714713D03*
+Y702902D03*
+Y691091D03*
+Y679280D03*
+X429650Y750146D03*
+Y738335D03*
+Y726524D03*
+Y714713D03*
+Y702902D03*
+Y691091D03*
+Y679280D03*
+G54D61*X383858Y568898D03*
+G54D64*X267000Y605390D03*
+Y591610D03*
+X295949Y583768D03*
+Y569988D03*
+G54D65*X394736Y618866D03*
+G54D64*X407236Y648756D03*
+Y634976D03*
+G54D66*X436736Y621189D03*
+X464295D03*
+Y634969D03*
+X436736D03*
+G54D61*X155512Y761811D03*
+G54D62*G36*
+X171700Y759800D02*Y753800D01*
+X177700D01*
+Y759800D01*
+X171700D01*
+G37*
+G54D67*X174700Y766800D03*
+X184700Y756800D03*
+Y766800D03*
+G54D65*X188000Y732000D03*
+G54D64*X180535Y709276D03*
+X166756D03*
+G54D65*X164961Y732283D03*
+G54D61*X155512Y568898D03*
+G54D64*X219425Y605799D03*
+X205646D03*
+G54D65*X159500Y596000D03*
+X179500D03*
+G54D67*X194700Y756800D03*
+X204700D03*
+X214700D03*
+X194700Y766800D03*
+X204700D03*
+X214700D03*
+X224700Y756800D03*
+X234700D03*
+X244700D03*
+X254700D03*
+X224700Y766800D03*
+X234700D03*
+X244700D03*
+X254700D03*
+X264700Y756800D03*
+X274700D03*
+X284700D03*
+X264700Y766800D03*
+X274700D03*
+X284700D03*
+X294700D03*
+X304700D03*
+X314700D03*
+X294700Y756800D03*
+X304700D03*
+X314700D03*
+X324700D03*
+Y766800D03*
+X334700Y756800D03*
+X344700D03*
+X354700D03*
+X364700D03*
+X334700Y766800D03*
+X344700D03*
+X354700D03*
+X364700D03*
+X219500Y623000D03*
+X225072Y614428D03*
+G54D68*X246000Y624500D03*
+X256000D03*
+G54D67*X232500Y622500D03*
+X240000Y623000D03*
+X273500Y619000D03*
+Y613000D03*
+X295500Y598500D03*
+X302000D03*
+X289000D03*
+G54D68*X329500Y598000D03*
+X322500Y599000D03*
+G54D67*X305500Y668000D03*
+X292500D03*
+X299000D03*
+X285500D03*
+G54D68*X274000Y643000D03*
+X322500Y619500D03*
+X304500Y604000D03*
+X396236Y606366D03*
+X365000Y610000D03*
+X373000Y640000D03*
+X343000Y604000D03*
+X346000Y638500D03*
+G54D67*X208000Y693500D03*
+X209000Y676000D03*
+Y682000D03*
+X225984Y690551D03*
+X209000Y641500D03*
+X262500Y676000D03*
+Y682000D03*
+Y670000D03*
+Y664000D03*
+Y658000D03*
+X209000D03*
+Y647500D03*
+Y664000D03*
+Y670000D03*
+X297602Y729209D03*
+X309600Y734400D03*
+X305000Y728400D03*
+G54D68*X309800Y748600D03*
+X412598Y738976D03*
+Y744094D03*
+X416654Y723110D03*
+X391800Y702300D03*
+X396700Y704600D03*
+X414961Y718110D03*
+X391800Y743700D03*
+Y723300D03*
+X392000Y729000D03*
+X358500Y740000D03*
+X392000Y708200D03*
+X391900Y687200D03*
+G54D67*X192000Y747500D03*
+X186000Y743500D03*
+X174500D03*
+X180000Y747500D03*
+X169000D03*
+X244488Y690551D03*
+X244874Y724740D03*
+X270098Y698272D03*
+G54D69*G54D70*G54D69*G54D70*G54D69*G54D70*G54D69*G54D70*G54D69*G54D71*G54D72*G54D73*G54D72*G54D73*G54D72*G54D71*G54D74*G54D75*G54D74*G54D76*G54D71*G54D77*G54D75*G54D74*G54D75*G54D71*G54D74*G54D75*G54D77*M02*
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.outline.gbr b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.outline.gbr
new file mode 100644
index 0000000..1012960
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.outline.gbr
@@ -0,0 +1,21 @@
+G04 start of page 4 for group 4 idx 5 *
+G04 Title: RspPiPS, outline *
+G04 Creator: pcb 4.2.0 *
+G04 CreationDate: Sun Jan 23 00:25:27 2022 UTC *
+G04 For: debian *
+G04 Format: Gerber/RS-274X *
+G04 PCB-Dimensions (mil): 10000.00 10000.00 *
+G04 PCB-Coordinate-Origin: lower left *
+%MOIN*%
+%FSLAX25Y25*%
+%LNOUTLINE*%
+%ADD58C,0.0060*%
+G54D58*X141732Y763780D02*Y566929D01*
+X153543Y555118D02*X464567D01*
+X476378Y566929D02*Y763780D01*
+X464567Y775591D02*X153543D01*
+X141732Y763780D02*G75*G02X153543Y775591I11811J0D01*G01*
+X464567D02*G75*G02X476378Y763780I0J-11811D01*G01*
+Y566929D02*G75*G02X464567Y555118I-11811J0D01*G01*
+X141732Y566929D02*G75*G03X153543Y555118I11811J0D01*G01*
+M02*
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.plated-drill.cnc b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.plated-drill.cnc
new file mode 100644
index 0000000..472e119
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.plated-drill.cnc
@@ -0,0 +1,160 @@
+M48
+INCH
+T85C0.020
+T84C0.035
+T83C0.038
+T82C0.045
+T81C0.040
+T80C0.035
+T79C0.040
+T78C0.106
+%
+T85
+X024600Y062450
+X025600Y062450
+X027400Y064300
+X030450Y060400
+X030980Y074860
+X032250Y061950
+X032250Y059900
+X032950Y059800
+X034300Y060400
+X034600Y063850
+X035850Y074000
+X036500Y061000
+X037300Y064000
+X039180Y074370
+X039180Y072330
+X039180Y070230
+X039190Y068720
+X039200Y072900
+X039200Y070820
+X039624Y060637
+X039670Y070460
+X041260Y074409
+X041260Y073898
+X041496Y071811
+X041665Y072311
+T84
+X016900Y074750
+X017450Y074350
+X018000Y074750
+X018600Y074350
+X019200Y074750
+X020800Y069350
+X020900Y068200
+X020900Y067600
+X020900Y067000
+X020900Y066400
+X020900Y065800
+X020900Y064750
+X020900Y064150
+X021950Y062300
+X022507Y061443
+X022598Y069055
+X023250Y062250
+X024000Y062300
+X024449Y069055
+X024487Y072474
+X026250Y068200
+X026250Y067600
+X026250Y067000
+X026250Y066400
+X026250Y065800
+X027010Y069827
+X027350Y061900
+X027350Y061300
+X028550Y066800
+X028900Y059850
+X029250Y066800
+X029550Y059850
+X029760Y072921
+X029900Y066800
+X030200Y059850
+X030500Y072840
+X030550Y066800
+X030960Y073440
+T80
+X016676Y070928
+X018054Y070928
+X020565Y060580
+X021943Y060580
+X026700Y060539
+X026700Y059161
+X029595Y058377
+X029595Y056999
+X040724Y064876
+X040724Y063498
+T83
+X017470Y076680
+X017470Y075680
+X018470Y076680
+X018470Y075680
+X019470Y076680
+X019470Y075680
+X020470Y076680
+X020470Y075680
+X021470Y076680
+X021470Y075680
+X022470Y076680
+X022470Y075680
+X023470Y076680
+X023470Y075680
+X024470Y076680
+X024470Y075680
+X025470Y076680
+X025470Y075680
+X026470Y076680
+X026470Y075680
+X027470Y076680
+X027470Y075680
+X028470Y076680
+X028470Y075680
+X029470Y076680
+X029470Y075680
+X030470Y076680
+X030470Y075680
+X031470Y076680
+X031470Y075680
+X032470Y076680
+X032470Y075680
+X033470Y076680
+X033470Y075680
+X034470Y076680
+X034470Y075680
+X035470Y076680
+X035470Y075680
+X036470Y076680
+X036470Y075680
+T81
+X015950Y059600
+X016496Y073228
+X017950Y059600
+X018800Y073200
+X039474Y061887
+T79
+X042965Y075015
+X042965Y073833
+X042965Y072652
+X042965Y071471
+X042965Y070290
+X042965Y069109
+X042965Y067928
+X044146Y075015
+X044146Y073833
+X044146Y072652
+X044146Y071471
+X044146Y070290
+X044146Y069109
+X044146Y067928
+T82
+X043674Y063497
+X043674Y062119
+X046430Y063497
+X046430Y062119
+T78
+X015551Y076181
+X015551Y056890
+X038386Y076181
+X038386Y056890
+M30
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.top.gbr b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.top.gbr
new file mode 100644
index 0000000..8708888
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.top.gbr
@@ -0,0 +1,2039 @@
+G04 start of page 2 for group 0 idx 0 *
+G04 Title: RspPiPS, top *
+G04 Creator: pcb 4.2.0 *
+G04 CreationDate: Sun Jan 23 00:25:27 2022 UTC *
+G04 For: debian *
+G04 Format: Gerber/RS-274X *
+G04 PCB-Dimensions (mil): 10000.00 10000.00 *
+G04 PCB-Coordinate-Origin: lower left *
+%MOIN*%
+%FSLAX25Y25*%
+%LNTOP*%
+%ADD34C,0.0380*%
+%ADD33C,0.0453*%
+%ADD32C,0.0354*%
+%ADD31C,0.1181*%
+%ADD30C,0.0402*%
+%ADD29C,0.1063*%
+%ADD28C,0.0350*%
+%ADD27C,0.0600*%
+%ADD26C,0.0768*%
+%ADD25C,0.0800*%
+%ADD24C,0.0630*%
+%ADD23C,0.0620*%
+%ADD22C,0.2362*%
+%ADD21C,0.0360*%
+%ADD20C,0.0450*%
+%ADD19C,0.1248*%
+%ADD18C,0.0500*%
+%ADD17C,0.0400*%
+%ADD16C,0.0100*%
+%ADD15C,0.0250*%
+%ADD14C,0.0150*%
+%ADD13C,0.0200*%
+%ADD12C,0.1000*%
+%ADD11C,0.0001*%
+G54D11*G36*
+X295942Y594522D02*X296128Y594537D01*
+X296740Y594684D01*
+X297322Y594925D01*
+X297858Y595254D01*
+X298337Y595663D01*
+X298746Y596142D01*
+X298750Y596148D01*
+X298754Y596142D01*
+X299163Y595663D01*
+X299642Y595254D01*
+X300178Y594925D01*
+X300760Y594684D01*
+X301372Y594537D01*
+X302000Y594488D01*
+X302475Y594525D01*
+X309000Y588000D01*
+X330818D01*
+X332847Y585971D01*
+X332904Y585904D01*
+X333173Y585674D01*
+X333173Y585674D01*
+X333361Y585559D01*
+X333475Y585489D01*
+X333803Y585354D01*
+X334147Y585271D01*
+X334147D01*
+X334500Y585243D01*
+X334588Y585250D01*
+X362412D01*
+X362500Y585243D01*
+X362853Y585271D01*
+X362853Y585271D01*
+X363197Y585354D01*
+X363525Y585489D01*
+X363827Y585674D01*
+X364096Y585904D01*
+X364153Y585971D01*
+X366182Y588000D01*
+X368521D01*
+X368556Y587558D01*
+X368776Y586640D01*
+X369000Y586100D01*
+Y558000D01*
+X295942D01*
+Y565826D01*
+X295949Y565826D01*
+X296600Y565877D01*
+X297235Y566030D01*
+X297839Y566279D01*
+X298395Y566621D01*
+X298892Y567045D01*
+X299316Y567542D01*
+X299658Y568098D01*
+X299908Y568702D01*
+X300060Y569337D01*
+X300098Y569988D01*
+X300060Y570639D01*
+X299908Y571274D01*
+X299658Y571878D01*
+X299316Y572435D01*
+X298892Y572931D01*
+X298395Y573356D01*
+X297839Y573697D01*
+X297235Y573947D01*
+X296600Y574099D01*
+X295949Y574151D01*
+X295942Y574150D01*
+Y594522D01*
+G37*
+G36*
+X266994Y609000D02*X288000D01*
+X290774Y606226D01*
+X290779Y603461D01*
+X289751Y602433D01*
+X289628Y602463D01*
+X289000Y602512D01*
+X288372Y602463D01*
+X287760Y602316D01*
+X287178Y602075D01*
+X286642Y601746D01*
+X286163Y601337D01*
+X285754Y600858D01*
+X285425Y600322D01*
+X285184Y599740D01*
+X285037Y599128D01*
+X284988Y598500D01*
+X285037Y597872D01*
+X285184Y597260D01*
+X285425Y596678D01*
+X285754Y596142D01*
+X286163Y595663D01*
+X286642Y595254D01*
+X287178Y594925D01*
+X287760Y594684D01*
+X288372Y594537D01*
+X289000Y594488D01*
+X289628Y594537D01*
+X290240Y594684D01*
+X290822Y594925D01*
+X291358Y595254D01*
+X291837Y595663D01*
+X292246Y596142D01*
+X292250Y596148D01*
+X292254Y596142D01*
+X292663Y595663D01*
+X293142Y595254D01*
+X293678Y594925D01*
+X294260Y594684D01*
+X294872Y594537D01*
+X295500Y594488D01*
+X295942Y594522D01*
+Y574150D01*
+X295298Y574099D01*
+X294663Y573947D01*
+X294059Y573697D01*
+X293502Y573356D01*
+X293006Y572931D01*
+X292581Y572435D01*
+X292240Y571878D01*
+X291990Y571274D01*
+X291838Y570639D01*
+X291786Y569988D01*
+X291838Y569337D01*
+X291990Y568702D01*
+X292240Y568098D01*
+X292581Y567542D01*
+X293006Y567045D01*
+X293502Y566621D01*
+X294059Y566279D01*
+X294663Y566030D01*
+X295298Y565877D01*
+X295942Y565826D01*
+Y558000D01*
+X266994D01*
+Y587448D01*
+X267000Y587448D01*
+X267651Y587499D01*
+X268286Y587652D01*
+X268890Y587902D01*
+X269447Y588243D01*
+X269943Y588667D01*
+X270367Y589164D01*
+X270709Y589721D01*
+X270959Y590324D01*
+X271111Y590959D01*
+X271150Y591610D01*
+X271111Y592261D01*
+X270959Y592896D01*
+X270709Y593500D01*
+X270367Y594057D01*
+X269943Y594554D01*
+X269447Y594978D01*
+X268890Y595319D01*
+X268286Y595569D01*
+X267651Y595721D01*
+X267000Y595773D01*
+X266994Y595772D01*
+Y609000D01*
+G37*
+G36*
+X179492D02*X203004D01*
+X202702Y608742D01*
+X202278Y608246D01*
+X201937Y607689D01*
+X201687Y607085D01*
+X201535Y606450D01*
+X201483Y605799D01*
+X201535Y605148D01*
+X201687Y604513D01*
+X201937Y603910D01*
+X202278Y603353D01*
+X202702Y602856D01*
+X203199Y602432D01*
+X203756Y602090D01*
+X204359Y601841D01*
+X204995Y601688D01*
+X205646Y601637D01*
+X206297Y601688D01*
+X206932Y601841D01*
+X207535Y602090D01*
+X208092Y602432D01*
+X208589Y602856D01*
+X209013Y603353D01*
+X209354Y603910D01*
+X209604Y604513D01*
+X209757Y605148D01*
+X209795Y605799D01*
+X209757Y606450D01*
+X209604Y607085D01*
+X209354Y607689D01*
+X209013Y608246D01*
+X208589Y608742D01*
+X208287Y609000D01*
+X266994D01*
+Y595772D01*
+X266349Y595721D01*
+X265714Y595569D01*
+X265110Y595319D01*
+X264553Y594978D01*
+X264057Y594554D01*
+X263633Y594057D01*
+X263291Y593500D01*
+X263041Y592896D01*
+X262889Y592261D01*
+X262838Y591610D01*
+X262889Y590959D01*
+X263041Y590324D01*
+X263291Y589721D01*
+X263633Y589164D01*
+X264057Y588667D01*
+X264553Y588243D01*
+X265110Y587902D01*
+X265714Y587652D01*
+X266349Y587499D01*
+X266994Y587448D01*
+Y558000D01*
+X179492D01*
+Y590985D01*
+X179500Y590985D01*
+X180285Y591046D01*
+X181050Y591230D01*
+X181777Y591531D01*
+X182448Y591942D01*
+X183046Y592454D01*
+X183558Y593052D01*
+X183969Y593723D01*
+X184270Y594450D01*
+X184454Y595215D01*
+X184500Y596000D01*
+X184454Y596785D01*
+X184270Y597550D01*
+X183969Y598277D01*
+X183558Y598948D01*
+X183046Y599546D01*
+X182448Y600058D01*
+X181777Y600469D01*
+X181050Y600770D01*
+X180285Y600954D01*
+X179500Y601015D01*
+X179492Y601015D01*
+Y609000D01*
+G37*
+G36*
+X171000Y558000D02*Y609000D01*
+X179492D01*
+Y601015D01*
+X178715Y600954D01*
+X177950Y600770D01*
+X177223Y600469D01*
+X176552Y600058D01*
+X175954Y599546D01*
+X175442Y598948D01*
+X175031Y598277D01*
+X174730Y597550D01*
+X174546Y596785D01*
+X174485Y596000D01*
+X174546Y595215D01*
+X174730Y594450D01*
+X175031Y593723D01*
+X175442Y593052D01*
+X175954Y592454D01*
+X176552Y591942D01*
+X177223Y591531D01*
+X177950Y591230D01*
+X178715Y591046D01*
+X179492Y590985D01*
+Y558000D01*
+X171000D01*
+G37*
+G36*
+X273750Y622500D02*X286500D01*
+Y608500D01*
+X273750D01*
+Y616763D01*
+X273853Y616771D01*
+X274197Y616854D01*
+X274525Y616989D01*
+X274827Y617174D01*
+X275091Y617409D01*
+X275591Y617909D01*
+X275826Y618173D01*
+X276011Y618475D01*
+X276146Y618803D01*
+X276229Y619147D01*
+X276257Y619500D01*
+X276229Y619853D01*
+X276146Y620197D01*
+X276011Y620525D01*
+X275826Y620827D01*
+X275596Y621096D01*
+X275327Y621326D01*
+X275025Y621511D01*
+X274697Y621646D01*
+X274353Y621729D01*
+X274000Y621757D01*
+X273750Y621737D01*
+Y622500D01*
+G37*
+G36*
+X255000Y608500D02*X269000Y622500D01*
+X273750D01*
+Y621737D01*
+X273647Y621729D01*
+X273303Y621646D01*
+X272975Y621511D01*
+X272673Y621326D01*
+X272409Y621091D01*
+X271909Y620591D01*
+X271674Y620327D01*
+X271489Y620025D01*
+X271354Y619697D01*
+X271271Y619353D01*
+X271243Y619000D01*
+X271271Y618647D01*
+X271354Y618303D01*
+X271489Y617975D01*
+X271674Y617673D01*
+X271904Y617404D01*
+X272173Y617174D01*
+X272475Y616989D01*
+X272803Y616854D01*
+X273147Y616771D01*
+X273500Y616743D01*
+X273750Y616763D01*
+Y608500D01*
+X255000D01*
+G37*
+G36*
+X184693Y772000D02*X191500D01*
+Y769982D01*
+X191048Y769453D01*
+X190678Y768849D01*
+X190407Y768195D01*
+X190242Y767506D01*
+X190186Y766800D01*
+X190242Y766094D01*
+X190407Y765405D01*
+X190678Y764751D01*
+X191048Y764147D01*
+X191500Y763618D01*
+Y759982D01*
+X191048Y759453D01*
+X190678Y758849D01*
+X190407Y758195D01*
+X190242Y757506D01*
+X190186Y756800D01*
+X190242Y756094D01*
+X190407Y755405D01*
+X190678Y754751D01*
+X191048Y754147D01*
+X191508Y753608D01*
+X192047Y753148D01*
+X192651Y752778D01*
+X193305Y752507D01*
+X193994Y752342D01*
+X194700Y752286D01*
+X194713Y752287D01*
+X195000Y752000D01*
+Y740500D01*
+X184693D01*
+Y752287D01*
+X184700Y752286D01*
+X185406Y752342D01*
+X186095Y752507D01*
+X186749Y752778D01*
+X187353Y753148D01*
+X187892Y753608D01*
+X188352Y754147D01*
+X188722Y754751D01*
+X188993Y755405D01*
+X189158Y756094D01*
+X189200Y756800D01*
+X189158Y757506D01*
+X188993Y758195D01*
+X188722Y758849D01*
+X188352Y759453D01*
+X187892Y759992D01*
+X187353Y760452D01*
+X186749Y760822D01*
+X186095Y761093D01*
+X185406Y761258D01*
+X184700Y761314D01*
+X184693Y761313D01*
+Y772000D01*
+G37*
+G36*
+X174700D02*X184693D01*
+Y761313D01*
+X183994Y761258D01*
+X183305Y761093D01*
+X182651Y760822D01*
+X182047Y760452D01*
+X181508Y759992D01*
+X181048Y759453D01*
+X180678Y758849D01*
+X180407Y758195D01*
+X180242Y757506D01*
+X180186Y756800D01*
+X180242Y756094D01*
+X180407Y755405D01*
+X180678Y754751D01*
+X181048Y754147D01*
+X181508Y753608D01*
+X182047Y753148D01*
+X182651Y752778D01*
+X183305Y752507D01*
+X183994Y752342D01*
+X184693Y752287D01*
+Y740500D01*
+X174700D01*
+Y752307D01*
+X177935Y752314D01*
+X178165Y752369D01*
+X178383Y752459D01*
+X178584Y752583D01*
+X178764Y752736D01*
+X178917Y752916D01*
+X179041Y753117D01*
+X179131Y753335D01*
+X179186Y753565D01*
+X179200Y753800D01*
+X179186Y760035D01*
+X179131Y760265D01*
+X179041Y760483D01*
+X178917Y760684D01*
+X178764Y760864D01*
+X178584Y761017D01*
+X178383Y761141D01*
+X178165Y761231D01*
+X177935Y761286D01*
+X177700Y761300D01*
+X174700Y761293D01*
+Y772000D01*
+G37*
+G36*
+X166000D02*X174700D01*
+Y761293D01*
+X171465Y761286D01*
+X171235Y761231D01*
+X171017Y761141D01*
+X170816Y761017D01*
+X170636Y760864D01*
+X170483Y760684D01*
+X170359Y760483D01*
+X170269Y760265D01*
+X170214Y760035D01*
+X170200Y759800D01*
+X170214Y753565D01*
+X170269Y753335D01*
+X170359Y753117D01*
+X170483Y752916D01*
+X170636Y752736D01*
+X170816Y752583D01*
+X171017Y752459D01*
+X171235Y752369D01*
+X171465Y752314D01*
+X171700Y752300D01*
+X174700Y752307D01*
+Y740500D01*
+X166000D01*
+Y754408D01*
+X166962Y755977D01*
+X167733Y757840D01*
+X168204Y759801D01*
+X168323Y761811D01*
+X168204Y763821D01*
+X167733Y765782D01*
+X166962Y767645D01*
+X166000Y769214D01*
+Y772000D01*
+G37*
+G36*
+X206000Y702000D02*X256025D01*
+X266000Y692025D01*
+Y654000D01*
+X258248D01*
+X258241Y685657D01*
+X258204Y685810D01*
+X258144Y685955D01*
+X258062Y686089D01*
+X257959Y686209D01*
+X257840Y686311D01*
+X257705Y686394D01*
+X257560Y686454D01*
+X257407Y686491D01*
+X257250Y686500D01*
+X214593Y686491D01*
+X214440Y686454D01*
+X214295Y686394D01*
+X214160Y686311D01*
+X214041Y686209D01*
+X213938Y686089D01*
+X213856Y685955D01*
+X213796Y685810D01*
+X213759Y685657D01*
+X213750Y685500D01*
+X213757Y654000D01*
+X206000D01*
+Y690700D01*
+X208000D01*
+X208439Y690726D01*
+X208868Y690829D01*
+X209275Y690997D01*
+X209651Y691228D01*
+X209986Y691514D01*
+X210272Y691849D01*
+X210503Y692225D01*
+X210671Y692632D01*
+X210774Y693061D01*
+X210809Y693500D01*
+X210774Y693939D01*
+X210671Y694368D01*
+X210503Y694775D01*
+X210272Y695151D01*
+X209986Y695486D01*
+X209651Y695772D01*
+X209275Y696003D01*
+X208868Y696171D01*
+X208439Y696274D01*
+X208000Y696300D01*
+X206000D01*
+Y702000D01*
+G37*
+G36*
+X446500Y738200D02*X452527D01*
+X452865Y737649D01*
+X453571Y736822D01*
+X454397Y736117D01*
+X455324Y735549D01*
+X456328Y735133D01*
+X457385Y734879D01*
+X457700Y734854D01*
+Y694650D01*
+X457385Y694625D01*
+X456328Y694371D01*
+X455324Y693955D01*
+X454397Y693387D01*
+X453571Y692681D01*
+X452865Y691855D01*
+X452297Y690928D01*
+X451881Y689924D01*
+X451627Y688867D01*
+X451542Y687783D01*
+X451627Y686700D01*
+X451881Y685643D01*
+X452297Y684639D01*
+X452865Y683712D01*
+X453571Y682885D01*
+X454397Y682180D01*
+X455324Y681612D01*
+X456328Y681196D01*
+X457385Y680942D01*
+X457700Y680917D01*
+Y665400D01*
+X451915D01*
+X451719Y665719D01*
+X451106Y666437D01*
+X450388Y667050D01*
+X449583Y667544D01*
+X448710Y667905D01*
+X447792Y668126D01*
+X446850Y668181D01*
+X446500D01*
+Y738200D01*
+G37*
+G36*
+X459800Y751200D02*X473500D01*
+Y646200D01*
+X459800D01*
+Y681001D01*
+X460609Y681196D01*
+X461613Y681612D01*
+X462540Y682180D01*
+X463366Y682885D01*
+X464072Y683712D01*
+X464640Y684639D01*
+X465056Y685643D01*
+X465310Y686700D01*
+X465374Y687783D01*
+X465310Y688867D01*
+X465056Y689924D01*
+X464640Y690928D01*
+X464072Y691855D01*
+X463366Y692681D01*
+X462540Y693387D01*
+X461613Y693955D01*
+X460609Y694371D01*
+X459800Y694565D01*
+Y734938D01*
+X460609Y735133D01*
+X461613Y735549D01*
+X462540Y736117D01*
+X463366Y736822D01*
+X464072Y737649D01*
+X464640Y738576D01*
+X465056Y739580D01*
+X465310Y740637D01*
+X465374Y741720D01*
+X465310Y742804D01*
+X465056Y743861D01*
+X464640Y744865D01*
+X464072Y745792D01*
+X463366Y746618D01*
+X462540Y747324D01*
+X461613Y747892D01*
+X460609Y748308D01*
+X459800Y748502D01*
+Y751200D01*
+G37*
+G36*
+X343098Y725092D02*X330663Y725078D01*
+X330433Y725023D01*
+X330215Y724933D01*
+X330014Y724809D01*
+X329834Y724656D01*
+X329681Y724477D01*
+X329558Y724275D01*
+X329467Y724057D01*
+X329412Y723828D01*
+X329398Y723592D01*
+X329401Y718992D01*
+X327576D01*
+X326942Y719144D01*
+X326000Y719219D01*
+X325058Y719144D01*
+X324424Y718992D01*
+X324408D01*
+X323466Y718937D01*
+X322548Y718716D01*
+X321676Y718355D01*
+X321100Y718002D01*
+Y726800D01*
+X335400D01*
+Y736000D01*
+X346200D01*
+X350400Y731800D01*
+X360900D01*
+X367100Y725600D01*
+Y697400D01*
+X321100D01*
+Y707982D01*
+X321676Y707630D01*
+X322548Y707268D01*
+X323466Y707048D01*
+X324408Y706992D01*
+X329409D01*
+X329412Y702157D01*
+X329467Y701927D01*
+X329558Y701709D01*
+X329681Y701508D01*
+X329834Y701328D01*
+X330014Y701175D01*
+X330215Y701051D01*
+X330433Y700961D01*
+X330663Y700906D01*
+X330898Y700892D01*
+X343334Y700906D01*
+X343563Y700961D01*
+X343782Y701051D01*
+X343983Y701175D01*
+X344162Y701328D01*
+X344316Y701508D01*
+X344439Y701709D01*
+X344529Y701927D01*
+X344585Y702157D01*
+X344598Y702392D01*
+X344585Y723828D01*
+X344529Y724057D01*
+X344439Y724275D01*
+X344316Y724477D01*
+X344162Y724656D01*
+X343983Y724809D01*
+X343782Y724933D01*
+X343563Y725023D01*
+X343334Y725078D01*
+X343098Y725092D01*
+G37*
+G36*
+X330663Y725078D01*
+X330433Y725023D01*
+X330215Y724933D01*
+X330014Y724809D01*
+X329834Y724656D01*
+X329681Y724477D01*
+X329558Y724275D01*
+X329467Y724057D01*
+X329412Y723828D01*
+X329398Y723592D01*
+X329401Y718992D01*
+X327576D01*
+X326942Y719144D01*
+X326000Y719219D01*
+X325058Y719144D01*
+X324424Y718992D01*
+X324408D01*
+X323466Y718937D01*
+X322548Y718716D01*
+X321676Y718355D01*
+X321100Y718002D01*
+Y725900D01*
+X345300D01*
+Y700100D01*
+X321100D01*
+Y707982D01*
+X321676Y707630D01*
+X322548Y707268D01*
+X323466Y707048D01*
+X324408Y706992D01*
+X329409D01*
+X329412Y702157D01*
+X329467Y701927D01*
+X329558Y701709D01*
+X329681Y701508D01*
+X329834Y701328D01*
+X330014Y701175D01*
+X330215Y701051D01*
+X330433Y700961D01*
+X330663Y700906D01*
+X330898Y700892D01*
+X343334Y700906D01*
+X343563Y700961D01*
+X343782Y701051D01*
+X343983Y701175D01*
+X344162Y701328D01*
+X344316Y701508D01*
+X344439Y701709D01*
+X344529Y701927D01*
+X344585Y702157D01*
+X344598Y702392D01*
+X344585Y723828D01*
+X344529Y724057D01*
+X344439Y724275D01*
+X344316Y724477D01*
+X344162Y724656D01*
+X343983Y724809D01*
+X343782Y724933D01*
+X343563Y725023D01*
+X343334Y725078D01*
+X343098Y725092D01*
+G37*
+G36*
+X321100Y725900D02*X329300D01*
+Y718992D01*
+X327576D01*
+X326942Y719144D01*
+X326000Y719219D01*
+X325058Y719144D01*
+X324424Y718992D01*
+X324408D01*
+X323466Y718937D01*
+X322548Y718716D01*
+X321676Y718355D01*
+X321100Y718002D01*
+Y725900D01*
+G37*
+G36*
+X329300Y706992D02*Y704700D01*
+X321100D01*
+Y707982D01*
+X321676Y707630D01*
+X322548Y707268D01*
+X323466Y707048D01*
+X324408Y706992D01*
+X329300D01*
+G37*
+G54D12*X389000Y588500D02*X374500D01*
+X393411D02*X386900D01*
+G54D13*X370000Y595000D02*X372000Y597000D01*
+G54D14*X362500Y592000D02*X370500Y600000D01*
+G54D13*X372000Y597000D02*X386000D01*
+G54D14*X358543Y598000D02*X362500D01*
+X363500Y599000D01*
+X351457Y598000D02*X347000D01*
+G54D13*X386000Y597000D02*X388500Y599500D01*
+G54D15*X391500Y602500D01*
+G54D16*X383543Y605000D02*X391500D01*
+G54D15*X390685Y601685D02*X388760Y599760D01*
+G54D12*X356000Y569500D02*X375000Y588500D01*
+G54D15*X362500Y587500D02*X370000Y595000D01*
+G54D14*X362500Y592000D02*X349000D01*
+X347000Y594000D01*
+G54D15*X334500Y587500D02*X362500D01*
+G54D16*X334423Y617412D02*X337312D01*
+X334423Y613512D02*X343412D01*
+X345000Y615100D01*
+G54D14*X337588Y617712D02*X340357Y620481D01*
+G54D16*X358543Y607500D02*X362500D01*
+G54D14*X363000Y617000D02*X365000Y615000D01*
+Y610000D01*
+X363500Y608500D02*X365000Y610000D01*
+G54D16*X362500Y607500D02*X365000Y610000D01*
+G54D14*X363500Y599000D02*Y608500D01*
+X370457Y604500D02*Y604043D01*
+X370500Y600000D02*Y604457D01*
+X370457Y604500D01*
+X373000Y616150D02*Y610000D01*
+X370500Y607500D01*
+Y605000D01*
+X358543Y617000D02*X363000D01*
+X363500Y626500D02*X358543D01*
+X363500D02*X365000Y628000D01*
+G54D12*X365433Y659591D02*Y670000D01*
+X391846Y648756D02*X391736Y648866D01*
+Y651866D02*Y645366D01*
+X373331Y651866D02*X391736D01*
+X373567Y651457D02*X365433Y659591D01*
+X399900Y662181D02*X388581Y673500D01*
+X384000D01*
+G54D17*X464236Y582866D02*X464405Y582697D01*
+X457236Y562866D02*X458405D01*
+X464405Y568866D01*
+X451361Y562866D02*X464405D01*
+X451361Y582866D02*X464236D01*
+G54D12*X464405Y566035D02*X464236Y565866D01*
+X427189Y572811D02*X409689D01*
+X464485Y566515D02*Y621054D01*
+X409100Y572811D02*X393411Y588500D01*
+G54D14*X370457Y604500D03*
+X376457Y605000D02*X370500D01*
+X365000Y628000D02*Y634500D01*
+X363500Y636000D01*
+X358393D01*
+X373000Y631850D02*Y640000D01*
+G54D12*X436736Y634969D02*X407524D01*
+X464295D02*X436300D01*
+G54D13*X401236Y624866D02*X401736Y625366D01*
+G54D18*X402008Y620465D02*X401323Y619780D01*
+G54D15*X390736Y614866D02*X394736Y618866D01*
+G54D12*X391736Y629366D02*X399913Y621189D01*
+X391736Y646366D02*Y629866D01*
+G54D15*X416736Y608866D02*Y614366D01*
+X414236Y606366D02*X416736Y608866D01*
+X408779Y606366D02*X414236D01*
+X396236D02*X401693D01*
+X390685Y614815D02*Y601685D01*
+G54D19*X466354Y620835D02*X398280D01*
+G54D12*X464585Y620754D02*X464665Y620835D01*
+X407236Y648756D02*X391846D01*
+X407236D02*X407580Y649100D01*
+X406080Y648700D02*X468600D01*
+X446850Y662181D02*X400378D01*
+G54D17*X449400D02*X448600Y662981D01*
+X446700Y662181D02*X450300Y665781D01*
+X449400Y670900D02*Y662181D01*
+G54D12*X447000D02*X452900Y668081D01*
+G54D17*X450300Y665781D02*Y671800D01*
+X449400Y670900D01*
+X448600Y662981D02*Y673700D01*
+G54D12*X452900Y668081D02*Y669300D01*
+G54D14*X313000Y617500D02*X309000D01*
+X309957Y594500D02*X306500D01*
+X302000Y590000D01*
+G54D16*X351457Y626500D02*X346500D01*
+X345000Y625000D01*
+Y615000D01*
+X351457Y617000D02*X345000D01*
+X351457Y607500D02*X346000D01*
+X342088Y611412D01*
+G54D14*X347000Y594000D02*Y607500D01*
+X351307Y636000D02*X347500D01*
+X346000Y637500D01*
+Y638500D01*
+X340500D01*
+Y634129D01*
+X340457Y634086D01*
+G54D16*X334423Y615412D02*X330088D01*
+X334423Y611512D02*X342088D01*
+G54D14*X330457Y604000D02*X326000D01*
+X337543D02*X343000D01*
+G54D16*X318000Y613500D02*X321000D01*
+G54D14*X330088Y615412D02*X329912D01*
+X326000Y611000D02*X330000Y615500D01*
+G54D16*X320960Y613500D02*X322500Y611960D01*
+Y611953D01*
+X323412Y615412D02*X327000Y619000D01*
+X327312Y619312D02*X327250Y619250D01*
+G54D14*X329129Y626000D02*Y619441D01*
+X329000Y619312D01*
+X327312D01*
+X327250Y619250D02*Y619162D01*
+X323500Y615412D01*
+X322500Y619412D02*Y625543D01*
+X322043Y626000D01*
+X340457Y620081D02*Y627000D01*
+G54D16*X334323Y619412D02*X327212D01*
+X322412D02*X322500Y619500D01*
+G54D14*X317000Y604000D02*X322500D01*
+Y612000D02*Y599000D01*
+G54D16*X318000Y619412D02*X322412D01*
+G54D14*X317043Y594500D02*X324500D01*
+X326000Y596000D01*
+G54D15*X329500Y598000D02*Y592500D01*
+X334500Y587500D01*
+G54D14*X326000Y611000D02*Y596000D01*
+G54D16*X317923Y615412D02*X323412D01*
+X428468Y726524D02*X429650D01*
+X427287Y714713D02*X429650D01*
+G54D14*X441461D02*X435402Y708654D01*
+X427189D01*
+X423614Y720748D02*X429650Y714713D01*
+X441461Y726524D02*X436094Y731890D01*
+G54D17*X448700Y735100D03*
+X441200Y738500D02*X447900Y731800D01*
+X452100D01*
+G54D14*X436094Y731890D02*X428083D01*
+X428087Y726524D02*X429866D01*
+G54D15*X441461Y750146D02*X441606Y750000D01*
+G54D17*X441461Y750146D02*X441515Y750200D01*
+X441353Y750253D02*X447300Y756200D01*
+X466600D01*
+Y745352D01*
+G54D14*X420933Y724740D02*X416697Y728976D01*
+X416165Y733976D02*X423614Y726528D01*
+Y720748D01*
+X416473Y729200D02*X416837Y728837D01*
+X420933Y714909D02*Y724740D01*
+X428083Y731890D02*X415878Y744094D01*
+X415634Y738976D02*X428087Y726524D01*
+X412598Y738976D02*X411811Y738189D01*
+X415900Y744072D02*X415772Y744200D01*
+X415410Y739200D02*X415855Y738755D01*
+X333554Y750454D02*X366846D01*
+X338700Y747000D02*X365600D01*
+X363800Y744300D02*X337100D01*
+X336000Y741800D02*X356700D01*
+X358000Y740500D01*
+X363000Y740000D02*X358500D01*
+X366800Y750500D02*X372054Y745246D01*
+X377700Y730400D02*X363800Y744300D01*
+X365065Y738335D03*
+X374400Y729000D02*X365065Y738335D01*
+X365200Y738200D02*X363400Y740000D01*
+X363200D01*
+X378200Y739100D02*X371300Y746000D01*
+X378300Y734200D02*X365500Y747000D01*
+X284700Y766800D02*X282200D01*
+X277050Y761650D01*
+X290200Y753700D02*X293200Y750700D01*
+X284700Y747500D02*X290400Y741800D01*
+X293150Y750750D02*X299600Y744300D01*
+X283700Y739200D02*X332200D01*
+X290400Y741800D02*X331900D01*
+X299600Y744300D02*X324000D01*
+X309800Y748600D02*X311400Y747000D01*
+X277000Y756800D02*X281900Y761700D01*
+X284700Y756800D02*Y747500D01*
+X288100Y761750D02*X289950Y759900D01*
+Y753950D01*
+X281950Y761750D02*X288100D01*
+X288275Y761575D01*
+X337400Y744300D02*X323300D01*
+G54D15*X330313Y733964D02*X336400D01*
+G54D14*X311400Y747000D02*X339000D01*
+G54D15*X310585Y733415D02*X317613D01*
+Y730306D02*Y733415D01*
+Y734665D02*X317600Y728800D01*
+X297602Y722628D02*Y729209D01*
+X282239Y708961D02*X279900Y711300D01*
+X282239Y708961D02*X302339D01*
+X297602Y729209D02*X298411Y728400D01*
+X305000D01*
+X309600Y733000D01*
+Y734400D01*
+X310585Y733415D01*
+X317600Y728800D02*X317599Y728400D01*
+X317597Y727500D01*
+X312600D02*Y721992D01*
+X317597Y727500D02*X306000D01*
+X305000Y728500D01*
+X309298Y712992D02*X309406Y713100D01*
+X324300D01*
+G54D12*X326000Y713200D02*X326008Y713192D01*
+G54D14*X374400Y718100D02*X379197Y713303D01*
+X379003Y718303D02*X379000Y718300D01*
+X377700Y719600D01*
+Y722300D01*
+X334500Y739200D02*X338000D01*
+X337600D02*X351200D01*
+X354900Y735500D01*
+X362500D01*
+X371000Y727000D01*
+X369250Y728750D02*X371000Y727000D01*
+G54D12*X325800Y722700D02*X343900D01*
+X343500D02*X344000Y723200D01*
+X344400Y722800D01*
+G54D14*X338400Y717800D02*X339500D01*
+X339800Y717500D01*
+X371000Y720500D02*Y727000D01*
+Y726000D01*
+X374400Y718100D02*Y729000D01*
+G54D12*X327953Y670472D02*Y666142D01*
+G54D14*X324700Y766800D02*X329776Y761724D01*
+Y754232D01*
+X333350Y750657D01*
+G54D15*X329613Y734665D02*X330313Y733964D01*
+X325300Y704800D02*X324700Y705400D01*
+G54D14*X332100Y739200D02*X334700D01*
+X331800Y741800D02*X336100D01*
+G54D12*X330200Y702700D02*X328200Y704700D01*
+G54D15*X295935Y720961D02*X297602Y722628D01*
+X295935Y720961D02*X296966Y721992D01*
+X312598D01*
+X311408D02*X312000D01*
+X302339Y708961D02*X303700Y707600D01*
+Y705000D01*
+X304808Y703892D01*
+X312600D01*
+G54D12*X324408Y712992D02*X336998D01*
+G54D19*X364800Y687205D02*X300722D01*
+G54D20*X369395D02*X362800D01*
+G54D12*X328100Y703500D02*X334300Y709700D01*
+X325800Y702700D02*X326000Y702900D01*
+X326100Y702000D02*Y722300D01*
+X334300Y709700D02*X337700D01*
+X344600Y723900D02*Y702600D01*
+X345200Y704100D02*X330900D01*
+G54D14*X371000Y700600D02*Y703400D01*
+G54D15*X376800Y688200D02*X366600Y698400D01*
+G54D14*X384618Y692244D02*X379444D01*
+X379400Y692200D01*
+X371000Y700600D01*
+G54D20*X368595Y687205D02*X364400D01*
+X383100Y673500D02*X369395Y687205D01*
+G54D14*X371000Y702900D02*Y721500D01*
+X384750Y734200D02*X378300D01*
+X384766Y718303D02*X379003D01*
+X434193Y672012D02*X417358D01*
+X419028Y679280D02*X429650D01*
+X435787Y685417D02*X424508D01*
+X425984Y691091D02*X429650D01*
+X441461Y679280D02*X434193Y672012D01*
+X441461Y691091D02*X435787Y685417D01*
+X424898Y702902D02*X429650D01*
+X427189Y708654D02*X420933Y714909D01*
+X424508Y702902D02*X420933Y706476D01*
+Y709547D01*
+X415051Y715429D01*
+Y718110D01*
+X417358Y706866D02*Y699717D01*
+X411114Y713110D02*X417358Y706866D01*
+X405118Y723110D02*X416654D01*
+X405118Y718110D02*X414961D01*
+X405118Y713110D02*X411114D01*
+X410752Y708110D02*X405118D01*
+X413783Y705079D02*X410752Y708110D01*
+X413783Y696142D02*Y705079D01*
+X417358Y672012D02*X405740Y683630D01*
+X415571Y682736D02*X419028Y679280D01*
+X424508Y685417D02*X413783Y696142D01*
+X415571Y687205D02*Y682736D01*
+X417358Y699717D02*X425984Y691091D01*
+X410531Y692244D02*X415571Y687205D01*
+X405118Y692244D02*X410531D01*
+X405740Y683630D02*Y687205D01*
+X384766Y723303D02*X391897D01*
+X391900Y723300D01*
+G54D20*X397200Y704300D02*Y735400D01*
+G54D14*X384766Y708303D02*X384869Y708200D01*
+X392000D01*
+X384618Y702244D02*X391856D01*
+X391900Y702200D01*
+G54D20*X391800Y702300D02*X395200D01*
+X397200Y704300D01*
+G54D14*X384618Y687244D02*X391856D01*
+X391900Y687200D01*
+G54D15*X394500Y682500D02*X397700Y685700D01*
+Y696244D01*
+X391700Y702244D01*
+G54D14*X379197Y713303D02*X384766D01*
+G54D15*X380800Y682500D02*X394500D01*
+X381700D02*X380930D01*
+X376800Y686630D01*
+Y688200D01*
+G54D20*X391700Y743700D02*X397200Y738200D01*
+Y725000D01*
+X395503Y723303D01*
+X391800D01*
+G54D14*X391858Y728858D02*X392000Y729000D01*
+X377700Y722000D02*Y730400D01*
+X384666Y729058D02*X391758D01*
+X385500Y739100D02*X378200D01*
+X384924Y743900D02*X391900D01*
+X415772Y744200D02*X405250D01*
+Y739200D02*X415410D01*
+X405250Y734200D02*X405271Y734221D01*
+X415921D01*
+X405250Y729200D02*X416473D01*
+G54D15*X305543Y647799D02*Y656043D01*
+X300543Y647799D02*Y659543D01*
+X295543Y647799D02*Y659543D01*
+G54D18*X283500Y650500D02*X277000Y657000D01*
+G54D14*X276379Y657721D02*X279400Y654700D01*
+X268500Y645500D02*Y692000D01*
+X256500Y704000D01*
+G54D18*X258500Y686000D02*Y656500D01*
+G54D12*X309500Y660000D02*X290500D01*
+G54D15*X300543Y659543D02*X301000Y660000D01*
+X295543Y659543D02*X296000Y660000D01*
+X290543Y659957D02*X290500Y660000D01*
+G54D17*X286000Y668000D02*X305500D01*
+G54D12*X327953Y666142D02*X322047Y660236D01*
+X311811Y664961D02*X325984D01*
+X326772Y665748D01*
+X322047Y660236D02*X302756D01*
+G54D15*X305543Y656043D02*X307500Y658000D01*
+G54D12*X287000Y665000D02*X314500D01*
+X302756Y660236D02*X307087D01*
+X311811Y664961D01*
+G54D14*X276900Y676481D02*X276972Y676552D01*
+X276772Y677138D02*Y684619D01*
+X276379Y670052D02*Y657721D01*
+X276665Y691705D02*X276772D01*
+G54D15*X277165D02*Y696335D01*
+X275200Y698300D01*
+X275172Y698272D01*
+X270098D01*
+X290543Y647799D02*Y659957D01*
+X290500Y627000D02*Y621000D01*
+X295000Y616500D01*
+X295500Y627000D02*Y617000D01*
+X300500Y627000D02*Y621000D01*
+X295500Y616000D01*
+X292000Y619500D02*X298500D01*
+G54D14*X309000Y617500D02*X305500Y621000D01*
+Y627000D01*
+G54D18*X283500Y621000D02*Y650500D01*
+G54D16*X318000Y611500D02*X296500D01*
+X295500Y612500D01*
+Y616500D01*
+G54D15*Y598500D02*Y605000D01*
+X289000Y598500D01*
+X295500Y603000D02*Y602500D01*
+X291500Y598500D01*
+X295500Y605000D02*X302000Y598500D01*
+X289000D02*X302000D01*
+X295500Y602000D02*X299000Y598500D01*
+G54D14*X304500Y604000D02*X310000D01*
+G54D16*X313511Y617412D02*X317923D01*
+G54D21*X226000Y632200D02*X225946Y619446D01*
+G54D15*X221000Y632200D02*Y624500D01*
+X231000Y632200D02*Y624500D01*
+X236000Y632000D02*Y627000D01*
+X240000Y623000D01*
+X231000Y624500D02*X232500Y623000D01*
+G54D14*X238000Y615500D02*X226000D01*
+G54D17*X219425Y612925D02*X225946Y619446D01*
+Y612446D01*
+X219362Y605862D01*
+Y608932D02*X225930Y615500D01*
+G54D15*X226309Y615453D02*X225928Y615072D01*
+G54D17*X219425Y605799D02*Y612925D01*
+G54D21*X221000Y632000D02*Y625000D01*
+X219000Y623000D01*
+G54D15*X221000Y624500D02*X219500Y623000D01*
+G54D17*X216500Y620000D01*
+X208000D01*
+X219500Y623000D02*X209500D01*
+G54D12*X179268Y637472D02*Y626732D01*
+X186000Y620000D01*
+X211000D01*
+G54D17*X209500Y623000D02*X206500Y620000D01*
+G54D12*X207651Y646389D02*Y620389D01*
+G54D18*X179500Y596000D02*X189500D01*
+X179500D02*X175000D01*
+X179500D02*Y589000D01*
+X180000Y596000D02*Y602500D01*
+G54D14*X246000Y624500D02*Y632200D01*
+X256000Y624500D02*Y633000D01*
+X251000Y632200D02*Y617500D01*
+X249000Y615500D01*
+X245500D01*
+X256000Y633000D02*X268500Y645500D01*
+G54D15*X274000Y643000D02*Y637129D01*
+Y630043D02*Y619500D01*
+X273500Y619000D01*
+G54D12*X179268Y675661D02*Y696268D01*
+G54D15*X224000Y658000D02*X224500Y658500D01*
+X209000Y648000D02*X209500Y648500D01*
+G54D18*X214000Y689500D02*Y656500D01*
+X209000Y686500D02*X262000D01*
+G54D12*X179268Y696268D02*X180500Y697500D01*
+G54D21*X200000Y693500D02*X208000D01*
+X193000D02*X180500D01*
+G54D12*Y697500D02*Y709311D01*
+G54D16*X181000Y717500D02*X180500Y717000D01*
+G54D12*Y709311D02*X180156Y709656D01*
+G54D16*X200000Y717500D02*X181000D01*
+G54D12*X180500Y709000D02*Y744000D01*
+G54D15*X184500Y767000D02*X185000Y766500D01*
+G54D18*X189000Y733000D02*X181500D01*
+X189000Y732500D02*X181500Y725000D01*
+X181000D01*
+G54D16*X237543D02*X237500Y725043D01*
+X237543Y717914D02*Y713043D01*
+G54D14*X256500Y704000D02*X180500D01*
+G54D16*X237543Y713043D02*X236500Y712000D01*
+X219500D01*
+X214000Y717500D01*
+X207086D01*
+G54D19*X248363Y739563D02*X244427Y743500D01*
+X186000D01*
+G54D14*X244874Y724740D02*X244614Y725000D01*
+X237543D01*
+X272100Y761700D02*X269900Y759500D01*
+Y753000D01*
+X272900Y750000D01*
+X277050Y761650D02*X272050D01*
+X274700Y756800D02*X277000D01*
+X272850Y750050D02*X283700Y739200D01*
+G54D19*X300722Y687205D02*X247100Y740827D01*
+G54D22*X383858Y761811D03*
+G54D11*G36*
+X438361Y753246D02*Y747046D01*
+X444561D01*
+Y753246D01*
+X438361D01*
+G37*
+G54D23*X441461Y738335D03*
+Y726524D03*
+Y714713D03*
+Y702902D03*
+Y691091D03*
+Y679280D03*
+X429650Y750146D03*
+Y738335D03*
+Y726524D03*
+Y714713D03*
+Y702902D03*
+Y691091D03*
+Y679280D03*
+G54D22*X383858Y568898D03*
+G54D24*X267000Y605390D03*
+Y591610D03*
+X295949Y583768D03*
+Y569988D03*
+G54D25*X394736Y618866D03*
+G54D24*X407236Y648756D03*
+Y634976D03*
+G54D26*X436736Y621189D03*
+X464295D03*
+Y634969D03*
+X436736D03*
+G54D22*X155512Y761811D03*
+G54D11*G36*
+X171700Y759800D02*Y753800D01*
+X177700D01*
+Y759800D01*
+X171700D01*
+G37*
+G54D27*X174700Y766800D03*
+X184700Y756800D03*
+Y766800D03*
+G54D25*X188000Y732000D03*
+G54D24*X180535Y709276D03*
+X166756D03*
+G54D25*X164961Y732283D03*
+G54D22*X155512Y568898D03*
+G54D24*X219425Y605799D03*
+X205646D03*
+G54D25*X159500Y596000D03*
+X179500D03*
+G54D27*X194700Y756800D03*
+X204700D03*
+X214700D03*
+X194700Y766800D03*
+X204700D03*
+X214700D03*
+X224700Y756800D03*
+X234700D03*
+X244700D03*
+X254700D03*
+X224700Y766800D03*
+X234700D03*
+X244700D03*
+X254700D03*
+X264700Y756800D03*
+X274700D03*
+X284700D03*
+X264700Y766800D03*
+X274700D03*
+X284700D03*
+X294700D03*
+X304700D03*
+X314700D03*
+X294700Y756800D03*
+X304700D03*
+X314700D03*
+X324700D03*
+Y766800D03*
+X334700Y756800D03*
+X344700D03*
+X354700D03*
+X364700D03*
+X334700Y766800D03*
+X344700D03*
+X354700D03*
+X364700D03*
+G54D11*G36*
+X319602Y606952D02*X314484D01*
+Y601048D01*
+X319602D01*
+Y606952D01*
+G37*
+G36*
+X340102D02*X334984D01*
+Y601048D01*
+X340102D01*
+Y606952D01*
+G37*
+G36*
+X333016D02*X327898D01*
+Y601048D01*
+X333016D01*
+Y606952D01*
+G37*
+G36*
+X354016Y600952D02*X348898D01*
+Y595048D01*
+X354016D01*
+Y600952D01*
+G37*
+G36*
+Y610452D02*X348898D01*
+Y604548D01*
+X354016D01*
+Y610452D01*
+G37*
+G36*
+Y629452D02*X348898D01*
+Y623548D01*
+X354016D01*
+Y629452D01*
+G37*
+G36*
+Y619952D02*X348898D01*
+Y614048D01*
+X354016D01*
+Y619952D01*
+G37*
+G36*
+X353866Y638952D02*X348748D01*
+Y633048D01*
+X353866D01*
+Y638952D01*
+G37*
+G36*
+X332598Y612037D02*Y610987D01*
+X336248D01*
+Y612037D01*
+X332598D01*
+G37*
+G36*
+Y614006D02*Y612956D01*
+X336248D01*
+Y614006D01*
+X332598D01*
+G37*
+G36*
+Y615974D02*Y614924D01*
+X336248D01*
+Y615974D01*
+X332598D01*
+G37*
+G36*
+Y617943D02*Y616893D01*
+X336248D01*
+Y617943D01*
+X332598D01*
+G37*
+G36*
+Y619911D02*Y618861D01*
+X336248D01*
+Y619911D01*
+X332598D01*
+G37*
+G36*
+X316098D02*Y618861D01*
+X319748D01*
+Y619911D01*
+X316098D01*
+G37*
+G36*
+Y617943D02*Y616893D01*
+X319748D01*
+Y617943D01*
+X316098D01*
+G37*
+G36*
+Y615974D02*Y614924D01*
+X319748D01*
+Y615974D01*
+X316098D01*
+G37*
+G36*
+Y614006D02*Y612956D01*
+X319748D01*
+Y614006D01*
+X316098D01*
+G37*
+G36*
+X316073Y612062D02*Y610962D01*
+X319773D01*
+Y612062D01*
+X316073D01*
+G37*
+G36*
+X324602Y628952D02*X319484D01*
+Y623048D01*
+X324602D01*
+Y628952D01*
+G37*
+G36*
+X331688D02*X326570D01*
+Y623048D01*
+X331688D01*
+Y628952D01*
+G37*
+G36*
+X319602Y597452D02*X314484D01*
+Y591548D01*
+X319602D01*
+Y597452D01*
+G37*
+G36*
+X317008Y675512D02*Y664488D01*
+X337480D01*
+Y675512D01*
+X317008D01*
+G37*
+G36*
+X319863Y736915D02*X315363D01*
+Y729915D01*
+X319863D01*
+Y736915D01*
+G37*
+G36*
+X331863D02*X327363D01*
+Y729915D01*
+X331863D01*
+Y736915D01*
+G37*
+G36*
+X343098Y723592D02*X330898D01*
+Y702392D01*
+X343098D01*
+Y723592D01*
+G37*
+G36*
+X446539Y566561D02*Y561061D01*
+X454039D01*
+Y566561D01*
+X446539D01*
+G37*
+G36*
+Y584561D02*Y579061D01*
+X454039D01*
+Y584561D01*
+X446539D01*
+G37*
+G36*
+X438939Y584811D02*X415439D01*
+Y560811D01*
+X438939D01*
+Y584811D01*
+G37*
+G36*
+X379016Y607952D02*X373898D01*
+Y602048D01*
+X379016D01*
+Y607952D01*
+G37*
+G36*
+X386102D02*X380984D01*
+Y602048D01*
+X386102D01*
+Y607952D01*
+G37*
+G36*
+X404252Y609318D02*X399134D01*
+Y603414D01*
+X404252D01*
+Y609318D01*
+G37*
+G36*
+X411338D02*X406220D01*
+Y603414D01*
+X411338D01*
+Y609318D01*
+G37*
+G36*
+X368050Y621100D02*Y611200D01*
+X377950D01*
+Y621100D01*
+X368050D01*
+G37*
+G36*
+Y636800D02*Y626900D01*
+X377950D01*
+Y636800D01*
+X368050D01*
+G37*
+G36*
+X337505Y636645D02*Y631527D01*
+X343409D01*
+Y636645D01*
+X337505D01*
+G37*
+G36*
+Y629559D02*Y624441D01*
+X343409D01*
+Y629559D01*
+X337505D01*
+G37*
+G36*
+X361102Y600952D02*X355984D01*
+Y595048D01*
+X361102D01*
+Y600952D01*
+G37*
+G36*
+Y610452D02*X355984D01*
+Y604548D01*
+X361102D01*
+Y610452D01*
+G37*
+G36*
+Y629452D02*X355984D01*
+Y623548D01*
+X361102D01*
+Y629452D01*
+G37*
+G36*
+Y619952D02*X355984D01*
+Y614048D01*
+X361102D01*
+Y619952D01*
+G37*
+G36*
+X360952Y638952D02*X355834D01*
+Y633048D01*
+X360952D01*
+Y638952D01*
+G37*
+G36*
+X380500Y730200D02*Y728200D01*
+X389000D01*
+Y730200D01*
+X380500D01*
+G37*
+G36*
+X401000D02*Y728200D01*
+X409500D01*
+Y730200D01*
+X401000D01*
+G37*
+G36*
+Y735200D02*Y733200D01*
+X409500D01*
+Y735200D01*
+X401000D01*
+G37*
+G36*
+Y740200D02*Y738200D01*
+X409500D01*
+Y740200D01*
+X401000D01*
+G37*
+G36*
+Y745200D02*Y743200D01*
+X409500D01*
+Y745200D01*
+X401000D01*
+G37*
+G36*
+X291543Y631549D02*X289543D01*
+Y623049D01*
+X291543D01*
+Y631549D01*
+G37*
+G36*
+X296543D02*X294543D01*
+Y623049D01*
+X296543D01*
+Y631549D01*
+G37*
+G36*
+X301543D02*X299543D01*
+Y623049D01*
+X301543D01*
+Y631549D01*
+G37*
+G36*
+X306543D02*X304543D01*
+Y623049D01*
+X306543D01*
+Y631549D01*
+G37*
+G36*
+X291772Y619228D02*Y614110D01*
+X299252D01*
+Y619228D01*
+X291772D01*
+G37*
+G36*
+X306543Y652049D02*X304543D01*
+Y643549D01*
+X306543D01*
+Y652049D01*
+G37*
+G36*
+X301543D02*X299543D01*
+Y643549D01*
+X301543D01*
+Y652049D01*
+G37*
+G36*
+X296543D02*X294543D01*
+Y643549D01*
+X296543D01*
+Y652049D01*
+G37*
+G36*
+X312516Y606952D02*X307398D01*
+Y601048D01*
+X312516D01*
+Y606952D01*
+G37*
+G36*
+X291772Y607418D02*Y602300D01*
+X299252D01*
+Y607418D01*
+X291772D01*
+G37*
+G36*
+X312516Y597452D02*X307398D01*
+Y591548D01*
+X312516D01*
+Y597452D01*
+G37*
+G36*
+X232800Y636450D02*X229200D01*
+Y627950D01*
+X232800D01*
+Y636450D01*
+G37*
+G36*
+X237800D02*X234200D01*
+Y627950D01*
+X237800D01*
+Y636450D01*
+G37*
+G36*
+X242800D02*X239200D01*
+Y627950D01*
+X242800D01*
+Y636450D01*
+G37*
+G36*
+X222800D02*X219200D01*
+Y627950D01*
+X222800D01*
+Y636450D01*
+G37*
+G36*
+X227800D02*X224200D01*
+Y627950D01*
+X227800D01*
+Y636450D01*
+G37*
+G36*
+X184512Y647642D02*X173488D01*
+Y627169D01*
+X184512D01*
+Y647642D01*
+G37*
+G36*
+X247800Y636450D02*X244200D01*
+Y627950D01*
+X247800D01*
+Y636450D01*
+G37*
+G36*
+X252800D02*X249200D01*
+Y627950D01*
+X252800D01*
+Y636450D01*
+G37*
+G36*
+X214750Y685500D02*Y644500D01*
+X257250D01*
+Y685500D01*
+X214750D01*
+G37*
+G36*
+X247559Y618452D02*X242441D01*
+Y612548D01*
+X247559D01*
+Y618452D01*
+G37*
+G36*
+X240473D02*X235355D01*
+Y612548D01*
+X240473D01*
+Y618452D01*
+G37*
+G36*
+X202602Y696452D02*X197484D01*
+Y690548D01*
+X202602D01*
+Y696452D01*
+G37*
+G36*
+X195516D02*X190398D01*
+Y690548D01*
+X195516D01*
+Y696452D01*
+G37*
+G36*
+X184512Y685831D02*X173488D01*
+Y665358D01*
+X184512D01*
+Y685831D01*
+G37*
+G36*
+X234591Y720473D02*Y715355D01*
+X240495D01*
+Y720473D01*
+X234591D01*
+G37*
+G36*
+Y727559D02*Y722441D01*
+X240495D01*
+Y727559D01*
+X234591D01*
+G37*
+G36*
+X209645Y720452D02*X204527D01*
+Y714548D01*
+X209645D01*
+Y720452D01*
+G37*
+G36*
+X202559D02*X197441D01*
+Y714548D01*
+X202559D01*
+Y720452D01*
+G37*
+G36*
+X291543Y652049D02*X289543D01*
+Y643549D01*
+X291543D01*
+Y652049D01*
+G37*
+G36*
+X271048Y639688D02*Y634570D01*
+X276952D01*
+Y639688D01*
+X271048D01*
+G37*
+G36*
+Y632602D02*Y627484D01*
+X276952D01*
+Y632602D01*
+X271048D01*
+G37*
+G36*
+X273820Y679697D02*Y674579D01*
+X279724D01*
+Y679697D01*
+X273820D01*
+G37*
+G36*
+Y672611D02*Y667493D01*
+X279724D01*
+Y672611D01*
+X273820D01*
+G37*
+G36*
+Y687178D02*Y682060D01*
+X279724D01*
+Y687178D01*
+X273820D01*
+G37*
+G36*
+Y694264D02*Y689146D01*
+X279724D01*
+Y694264D01*
+X273820D01*
+G37*
+G36*
+X293685Y723211D02*Y718711D01*
+X300685D01*
+Y723211D01*
+X293685D01*
+G37*
+G36*
+Y711211D02*Y706711D01*
+X300685D01*
+Y711211D01*
+X293685D01*
+G37*
+G36*
+X306498Y724792D02*Y719192D01*
+X318698D01*
+Y724792D01*
+X306498D01*
+G37*
+G36*
+Y715792D02*Y710192D01*
+X318698D01*
+Y715792D01*
+X306498D01*
+G37*
+G36*
+Y706692D02*Y701092D01*
+X318698D01*
+Y706692D01*
+X306498D01*
+G37*
+G36*
+X355197Y675512D02*Y664488D01*
+X375669D01*
+Y675512D01*
+X355197D01*
+G37*
+G36*
+X380368Y693244D02*Y691244D01*
+X388868D01*
+Y693244D01*
+X380368D01*
+G37*
+G36*
+Y688244D02*Y686244D01*
+X388868D01*
+Y688244D01*
+X380368D01*
+G37*
+G36*
+Y703244D02*Y701244D01*
+X388868D01*
+Y703244D01*
+X380368D01*
+G37*
+G36*
+Y698244D02*Y696244D01*
+X388868D01*
+Y698244D01*
+X380368D01*
+G37*
+G36*
+X380516Y714303D02*Y712303D01*
+X389016D01*
+Y714303D01*
+X380516D01*
+G37*
+G36*
+Y709303D02*Y707303D01*
+X389016D01*
+Y709303D01*
+X380516D01*
+G37*
+G36*
+Y724303D02*Y722303D01*
+X389016D01*
+Y724303D01*
+X380516D01*
+G37*
+G36*
+Y719303D02*Y717303D01*
+X389016D01*
+Y719303D01*
+X380516D01*
+G37*
+G36*
+X401016Y709303D02*Y707303D01*
+X409516D01*
+Y709303D01*
+X401016D01*
+G37*
+G36*
+Y714303D02*Y712303D01*
+X409516D01*
+Y714303D01*
+X401016D01*
+G37*
+G36*
+Y719303D02*Y717303D01*
+X409516D01*
+Y719303D01*
+X401016D01*
+G37*
+G36*
+Y724303D02*Y722303D01*
+X409516D01*
+Y724303D01*
+X401016D01*
+G37*
+G36*
+X400868Y688244D02*Y686244D01*
+X409368D01*
+Y688244D01*
+X400868D01*
+G37*
+G36*
+Y693244D02*Y691244D01*
+X409368D01*
+Y693244D01*
+X400868D01*
+G37*
+G36*
+Y698244D02*Y696244D01*
+X409368D01*
+Y698244D01*
+X400868D01*
+G37*
+G36*
+Y703244D02*Y701244D01*
+X409368D01*
+Y703244D01*
+X400868D01*
+G37*
+G36*
+X380500Y745200D02*Y743200D01*
+X389000D01*
+Y745200D01*
+X380500D01*
+G37*
+G36*
+Y740200D02*Y738200D01*
+X389000D01*
+Y740200D01*
+X380500D01*
+G37*
+G36*
+Y735200D02*Y733200D01*
+X389000D01*
+Y735200D01*
+X380500D01*
+G37*
+G54D27*X219500Y623000D03*
+X225072Y614428D03*
+G54D21*X246000Y624500D03*
+X256000D03*
+G54D27*X232500Y622500D03*
+X240000Y623000D03*
+X273500Y619000D03*
+Y613000D03*
+X295500Y598500D03*
+X302000D03*
+X289000D03*
+G54D21*X329500Y598000D03*
+X322500Y599000D03*
+G54D27*X305500Y668000D03*
+X292500D03*
+X299000D03*
+X285500D03*
+G54D21*X274000Y643000D03*
+X322500Y619500D03*
+X304500Y604000D03*
+X396236Y606366D03*
+X365000Y610000D03*
+X373000Y640000D03*
+X343000Y604000D03*
+X346000Y638500D03*
+G54D27*X208000Y693500D03*
+X209000Y676000D03*
+Y682000D03*
+X225984Y690551D03*
+X209000Y641500D03*
+X262500Y676000D03*
+Y682000D03*
+Y670000D03*
+Y664000D03*
+Y658000D03*
+X209000D03*
+Y647500D03*
+Y664000D03*
+Y670000D03*
+X297602Y729209D03*
+X309600Y734400D03*
+X305000Y728400D03*
+G54D21*X309800Y748600D03*
+X412598Y738976D03*
+Y744094D03*
+X416654Y723110D03*
+X391800Y702300D03*
+X396700Y704600D03*
+X414961Y718110D03*
+X391800Y743700D03*
+Y723300D03*
+X392000Y729000D03*
+X358500Y740000D03*
+X392000Y708200D03*
+X391900Y687200D03*
+G54D27*X192000Y747500D03*
+X186000Y743500D03*
+X174500D03*
+X180000Y747500D03*
+X169000D03*
+X244488Y690551D03*
+X244874Y724740D03*
+X270098Y698272D03*
+G54D28*G54D13*G54D28*G54D13*G54D28*G54D13*G54D28*G54D13*G54D28*G54D29*G54D30*G54D31*G54D30*G54D31*G54D30*G54D29*G54D32*G54D17*G54D32*G54D33*G54D29*G54D34*G54D17*G54D32*G54D17*G54D29*G54D32*G54D17*G54D34*M02*
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.topmask.gbr b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.topmask.gbr
new file mode 100644
index 0000000..292a5b0
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.topmask.gbr
@@ -0,0 +1,751 @@
+G04 start of page 8 for group -4063 idx -4063 *
+G04 Title: RspPiPS, componentmask *
+G04 Creator: pcb 4.2.0 *
+G04 CreationDate: Sun Jan 23 00:25:27 2022 UTC *
+G04 For: debian *
+G04 Format: Gerber/RS-274X *
+G04 PCB-Dimensions (mil): 10000.00 10000.00 *
+G04 PCB-Coordinate-Origin: lower left *
+%MOIN*%
+%FSLAX25Y25*%
+%LNTOPMASK*%
+%ADD94C,0.0660*%
+%ADD93C,0.0846*%
+%ADD92C,0.0860*%
+%ADD91C,0.0787*%
+%ADD90C,0.1181*%
+%ADD89C,0.0720*%
+%ADD88C,0.0001*%
+%ADD87C,0.2461*%
+G54D87*X383858Y761811D03*
+G54D88*G36*
+X437861Y753746D02*Y746546D01*
+X445061D01*
+Y753746D01*
+X437861D01*
+G37*
+G54D89*X441461Y738335D03*
+Y726524D03*
+Y714713D03*
+Y702902D03*
+Y691091D03*
+Y679280D03*
+G54D90*X458469Y687783D03*
+G54D89*X429650Y750146D03*
+Y738335D03*
+G54D90*X458469Y741720D03*
+G54D89*X429650Y726524D03*
+Y714713D03*
+Y702902D03*
+Y691091D03*
+Y679280D03*
+G54D87*X383858Y568898D03*
+G54D91*X267000Y605390D03*
+Y591610D03*
+X295949Y583768D03*
+Y569988D03*
+G54D92*X394736Y618866D03*
+G54D91*X407236Y648756D03*
+Y634976D03*
+G54D93*X436736Y621189D03*
+X464295D03*
+Y634969D03*
+X436736D03*
+G54D87*X155512Y761811D03*
+G54D88*G36*
+X171400Y760100D02*Y753500D01*
+X178000D01*
+Y760100D01*
+X171400D01*
+G37*
+G54D94*X174700Y766800D03*
+X184700Y756800D03*
+Y766800D03*
+G54D92*X188000Y732000D03*
+G54D91*X180535Y709276D03*
+X166756D03*
+G54D92*X164961Y732283D03*
+G54D87*X155512Y568898D03*
+G54D91*X219425Y605799D03*
+X205646D03*
+G54D92*X159500Y596000D03*
+X179500D03*
+G54D94*X194700Y756800D03*
+X204700D03*
+X214700D03*
+X194700Y766800D03*
+X204700D03*
+X214700D03*
+X224700Y756800D03*
+X234700D03*
+X244700D03*
+X254700D03*
+X224700Y766800D03*
+X234700D03*
+X244700D03*
+X254700D03*
+X264700Y756800D03*
+X274700D03*
+X284700D03*
+X264700Y766800D03*
+X274700D03*
+X284700D03*
+X294700D03*
+X304700D03*
+X314700D03*
+X294700Y756800D03*
+X304700D03*
+X314700D03*
+X324700D03*
+Y766800D03*
+X334700Y756800D03*
+X344700D03*
+X354700D03*
+X364700D03*
+X334700Y766800D03*
+X344700D03*
+X354700D03*
+X364700D03*
+G54D88*G36*
+X319902Y607252D02*X314184D01*
+Y600748D01*
+X319902D01*
+Y607252D01*
+G37*
+G36*
+X340402D02*X334684D01*
+Y600748D01*
+X340402D01*
+Y607252D01*
+G37*
+G36*
+X333316D02*X327598D01*
+Y600748D01*
+X333316D01*
+Y607252D01*
+G37*
+G36*
+X354316Y601252D02*X348598D01*
+Y594748D01*
+X354316D01*
+Y601252D01*
+G37*
+G36*
+Y610752D02*X348598D01*
+Y604248D01*
+X354316D01*
+Y610752D01*
+G37*
+G36*
+Y629752D02*X348598D01*
+Y623248D01*
+X354316D01*
+Y629752D01*
+G37*
+G36*
+Y620252D02*X348598D01*
+Y613748D01*
+X354316D01*
+Y620252D01*
+G37*
+G36*
+X354166Y639252D02*X348448D01*
+Y632748D01*
+X354166D01*
+Y639252D01*
+G37*
+G36*
+X332398Y612237D02*Y610787D01*
+X336448D01*
+Y612237D01*
+X332398D01*
+G37*
+G36*
+Y614206D02*Y612756D01*
+X336448D01*
+Y614206D01*
+X332398D01*
+G37*
+G36*
+Y616174D02*Y614724D01*
+X336448D01*
+Y616174D01*
+X332398D01*
+G37*
+G36*
+Y618143D02*Y616693D01*
+X336448D01*
+Y618143D01*
+X332398D01*
+G37*
+G36*
+Y620111D02*Y618661D01*
+X336448D01*
+Y620111D01*
+X332398D01*
+G37*
+G36*
+X315898D02*Y618661D01*
+X319948D01*
+Y620111D01*
+X315898D01*
+G37*
+G36*
+Y618143D02*Y616693D01*
+X319948D01*
+Y618143D01*
+X315898D01*
+G37*
+G36*
+Y616174D02*Y614724D01*
+X319948D01*
+Y616174D01*
+X315898D01*
+G37*
+G36*
+Y614206D02*Y612756D01*
+X319948D01*
+Y614206D01*
+X315898D01*
+G37*
+G36*
+Y612237D02*Y610787D01*
+X319948D01*
+Y612237D01*
+X315898D01*
+G37*
+G36*
+X324902Y629252D02*X319184D01*
+Y622748D01*
+X324902D01*
+Y629252D01*
+G37*
+G36*
+X331988D02*X326270D01*
+Y622748D01*
+X331988D01*
+Y629252D01*
+G37*
+G36*
+X319902Y597752D02*X314184D01*
+Y591248D01*
+X319902D01*
+Y597752D01*
+G37*
+G36*
+X316614Y675906D02*Y664094D01*
+X337874D01*
+Y675906D01*
+X316614D01*
+G37*
+G36*
+X320163Y737215D02*X315063D01*
+Y729615D01*
+X320163D01*
+Y737215D01*
+G37*
+G36*
+X332163D02*X327063D01*
+Y729615D01*
+X332163D01*
+Y737215D01*
+G37*
+G36*
+X343398Y723892D02*X330598D01*
+Y702092D01*
+X343398D01*
+Y723892D01*
+G37*
+G36*
+X446689Y566411D02*Y561211D01*
+X453889D01*
+Y566411D01*
+X446689D01*
+G37*
+G36*
+Y584411D02*Y579211D01*
+X453889D01*
+Y584411D01*
+X446689D01*
+G37*
+G36*
+X438189Y584061D02*X416189D01*
+Y561561D01*
+X438189D01*
+Y584061D01*
+G37*
+G36*
+X379316Y608252D02*X373598D01*
+Y601748D01*
+X379316D01*
+Y608252D01*
+G37*
+G36*
+X386402D02*X380684D01*
+Y601748D01*
+X386402D01*
+Y608252D01*
+G37*
+G36*
+X404552Y609618D02*X398834D01*
+Y603114D01*
+X404552D01*
+Y609618D01*
+G37*
+G36*
+X411638D02*X405920D01*
+Y603114D01*
+X411638D01*
+Y609618D01*
+G37*
+G36*
+X369050Y620100D02*Y612200D01*
+X376950D01*
+Y620100D01*
+X369050D01*
+G37*
+G36*
+Y635800D02*Y627900D01*
+X376950D01*
+Y635800D01*
+X369050D01*
+G37*
+G36*
+X337205Y636945D02*Y631227D01*
+X343709D01*
+Y636945D01*
+X337205D01*
+G37*
+G36*
+Y629859D02*Y624141D01*
+X343709D01*
+Y629859D01*
+X337205D01*
+G37*
+G36*
+X361402Y601252D02*X355684D01*
+Y594748D01*
+X361402D01*
+Y601252D01*
+G37*
+G36*
+Y610752D02*X355684D01*
+Y604248D01*
+X361402D01*
+Y610752D01*
+G37*
+G36*
+Y629752D02*X355684D01*
+Y623248D01*
+X361402D01*
+Y629752D01*
+G37*
+G36*
+Y620252D02*X355684D01*
+Y613748D01*
+X361402D01*
+Y620252D01*
+G37*
+G36*
+X361252Y639252D02*X355534D01*
+Y632748D01*
+X361252D01*
+Y639252D01*
+G37*
+G36*
+X380000Y730700D02*Y727700D01*
+X389500D01*
+Y730700D01*
+X380000D01*
+G37*
+G36*
+X400500D02*Y727700D01*
+X410000D01*
+Y730700D01*
+X400500D01*
+G37*
+G36*
+Y735700D02*Y732700D01*
+X410000D01*
+Y735700D01*
+X400500D01*
+G37*
+G36*
+Y740700D02*Y737700D01*
+X410000D01*
+Y740700D01*
+X400500D01*
+G37*
+G36*
+Y745700D02*Y742700D01*
+X410000D01*
+Y745700D01*
+X400500D01*
+G37*
+G36*
+X292043Y632049D02*X289043D01*
+Y622549D01*
+X292043D01*
+Y632049D01*
+G37*
+G36*
+X297043D02*X294043D01*
+Y622549D01*
+X297043D01*
+Y632049D01*
+G37*
+G36*
+X302043D02*X299043D01*
+Y622549D01*
+X302043D01*
+Y632049D01*
+G37*
+G36*
+X307043D02*X304043D01*
+Y622549D01*
+X307043D01*
+Y632049D01*
+G37*
+G36*
+X291472Y619528D02*Y613810D01*
+X299552D01*
+Y619528D01*
+X291472D01*
+G37*
+G36*
+X307043Y652549D02*X304043D01*
+Y643049D01*
+X307043D01*
+Y652549D01*
+G37*
+G36*
+X302043D02*X299043D01*
+Y643049D01*
+X302043D01*
+Y652549D01*
+G37*
+G36*
+X297043D02*X294043D01*
+Y643049D01*
+X297043D01*
+Y652549D01*
+G37*
+G36*
+X312816Y607252D02*X307098D01*
+Y600748D01*
+X312816D01*
+Y607252D01*
+G37*
+G36*
+X291472Y607718D02*Y602000D01*
+X299552D01*
+Y607718D01*
+X291472D01*
+G37*
+G36*
+X312816Y597752D02*X307098D01*
+Y591248D01*
+X312816D01*
+Y597752D01*
+G37*
+G36*
+X233200Y636850D02*X228800D01*
+Y627550D01*
+X233200D01*
+Y636850D01*
+G37*
+G36*
+X238200D02*X233800D01*
+Y627550D01*
+X238200D01*
+Y636850D01*
+G37*
+G36*
+X243200D02*X238800D01*
+Y627550D01*
+X243200D01*
+Y636850D01*
+G37*
+G36*
+X223200D02*X218800D01*
+Y627550D01*
+X223200D01*
+Y636850D01*
+G37*
+G36*
+X228200D02*X223800D01*
+Y627550D01*
+X228200D01*
+Y636850D01*
+G37*
+G36*
+X184906Y648035D02*X173094D01*
+Y626776D01*
+X184906D01*
+Y648035D01*
+G37*
+G36*
+X248200Y636850D02*X243800D01*
+Y627550D01*
+X248200D01*
+Y636850D01*
+G37*
+G36*
+X253200D02*X248800D01*
+Y627550D01*
+X253200D01*
+Y636850D01*
+G37*
+G36*
+X214350Y685900D02*Y644100D01*
+X257650D01*
+Y685900D01*
+X214350D01*
+G37*
+G36*
+X247859Y618752D02*X242141D01*
+Y612248D01*
+X247859D01*
+Y618752D01*
+G37*
+G36*
+X240773D02*X235055D01*
+Y612248D01*
+X240773D01*
+Y618752D01*
+G37*
+G36*
+X202902Y696752D02*X197184D01*
+Y690248D01*
+X202902D01*
+Y696752D01*
+G37*
+G36*
+X195816D02*X190098D01*
+Y690248D01*
+X195816D01*
+Y696752D01*
+G37*
+G36*
+X184906Y686224D02*X173094D01*
+Y664965D01*
+X184906D01*
+Y686224D01*
+G37*
+G36*
+X234291Y720773D02*Y715055D01*
+X240795D01*
+Y720773D01*
+X234291D01*
+G37*
+G36*
+Y727859D02*Y722141D01*
+X240795D01*
+Y727859D01*
+X234291D01*
+G37*
+G36*
+X209945Y720752D02*X204227D01*
+Y714248D01*
+X209945D01*
+Y720752D01*
+G37*
+G36*
+X202859D02*X197141D01*
+Y714248D01*
+X202859D01*
+Y720752D01*
+G37*
+G36*
+X292043Y652549D02*X289043D01*
+Y643049D01*
+X292043D01*
+Y652549D01*
+G37*
+G36*
+X270748Y639988D02*Y634270D01*
+X277252D01*
+Y639988D01*
+X270748D01*
+G37*
+G36*
+Y632902D02*Y627184D01*
+X277252D01*
+Y632902D01*
+X270748D01*
+G37*
+G36*
+X273520Y679997D02*Y674279D01*
+X280024D01*
+Y679997D01*
+X273520D01*
+G37*
+G36*
+Y672911D02*Y667193D01*
+X280024D01*
+Y672911D01*
+X273520D01*
+G37*
+G36*
+Y687478D02*Y681760D01*
+X280024D01*
+Y687478D01*
+X273520D01*
+G37*
+G36*
+Y694564D02*Y688846D01*
+X280024D01*
+Y694564D01*
+X273520D01*
+G37*
+G36*
+X293385Y723511D02*Y718411D01*
+X300985D01*
+Y723511D01*
+X293385D01*
+G37*
+G36*
+Y711511D02*Y706411D01*
+X300985D01*
+Y711511D01*
+X293385D01*
+G37*
+G36*
+X306198Y725092D02*Y718892D01*
+X318998D01*
+Y725092D01*
+X306198D01*
+G37*
+G36*
+Y716092D02*Y709892D01*
+X318998D01*
+Y716092D01*
+X306198D01*
+G37*
+G36*
+Y706992D02*Y700792D01*
+X318998D01*
+Y706992D01*
+X306198D01*
+G37*
+G36*
+X354803Y675906D02*Y664094D01*
+X376063D01*
+Y675906D01*
+X354803D01*
+G37*
+G36*
+X379868Y693744D02*Y690744D01*
+X389368D01*
+Y693744D01*
+X379868D01*
+G37*
+G36*
+Y688744D02*Y685744D01*
+X389368D01*
+Y688744D01*
+X379868D01*
+G37*
+G36*
+Y703744D02*Y700744D01*
+X389368D01*
+Y703744D01*
+X379868D01*
+G37*
+G36*
+Y698744D02*Y695744D01*
+X389368D01*
+Y698744D01*
+X379868D01*
+G37*
+G36*
+X380016Y714803D02*Y711803D01*
+X389516D01*
+Y714803D01*
+X380016D01*
+G37*
+G36*
+Y709803D02*Y706803D01*
+X389516D01*
+Y709803D01*
+X380016D01*
+G37*
+G36*
+Y724803D02*Y721803D01*
+X389516D01*
+Y724803D01*
+X380016D01*
+G37*
+G36*
+Y719803D02*Y716803D01*
+X389516D01*
+Y719803D01*
+X380016D01*
+G37*
+G36*
+X400516Y709803D02*Y706803D01*
+X410016D01*
+Y709803D01*
+X400516D01*
+G37*
+G36*
+Y714803D02*Y711803D01*
+X410016D01*
+Y714803D01*
+X400516D01*
+G37*
+G36*
+Y719803D02*Y716803D01*
+X410016D01*
+Y719803D01*
+X400516D01*
+G37*
+G36*
+Y724803D02*Y721803D01*
+X410016D01*
+Y724803D01*
+X400516D01*
+G37*
+G36*
+X400368Y688744D02*Y685744D01*
+X409868D01*
+Y688744D01*
+X400368D01*
+G37*
+G36*
+Y693744D02*Y690744D01*
+X409868D01*
+Y693744D01*
+X400368D01*
+G37*
+G36*
+Y698744D02*Y695744D01*
+X409868D01*
+Y698744D01*
+X400368D01*
+G37*
+G36*
+Y703744D02*Y700744D01*
+X409868D01*
+Y703744D01*
+X400368D01*
+G37*
+G36*
+X380000Y745700D02*Y742700D01*
+X389500D01*
+Y745700D01*
+X380000D01*
+G37*
+G36*
+Y740700D02*Y737700D01*
+X389500D01*
+Y740700D01*
+X380000D01*
+G37*
+G36*
+Y735700D02*Y732700D01*
+X389500D01*
+Y735700D01*
+X380000D01*
+G37*
+M02*
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.toppaste.gbr b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.toppaste.gbr
new file mode 100644
index 0000000..dfa2722
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.toppaste.gbr
@@ -0,0 +1,655 @@
+G04 start of page 12 for group -4015 idx -4015 *
+G04 Title: RspPiPS, toppaste *
+G04 Creator: pcb 4.2.0 *
+G04 CreationDate: Sun Jan 23 00:25:27 2022 UTC *
+G04 For: debian *
+G04 Format: Gerber/RS-274X *
+G04 PCB-Dimensions (mil): 10000.00 10000.00 *
+G04 PCB-Coordinate-Origin: lower left *
+%MOIN*%
+%FSLAX25Y25*%
+%LNTOPPASTE*%
+%ADD110C,0.0001*%
+G54D110*G36*
+X222800Y636450D02*X219200D01*
+Y627950D01*
+X222800D01*
+Y636450D01*
+G37*
+G36*
+X227800D02*X224200D01*
+Y627950D01*
+X227800D01*
+Y636450D01*
+G37*
+G36*
+X232800D02*X229200D01*
+Y627950D01*
+X232800D01*
+Y636450D01*
+G37*
+G36*
+X237800D02*X234200D01*
+Y627950D01*
+X237800D01*
+Y636450D01*
+G37*
+G36*
+X242800D02*X239200D01*
+Y627950D01*
+X242800D01*
+Y636450D01*
+G37*
+G36*
+X247800D02*X244200D01*
+Y627950D01*
+X247800D01*
+Y636450D01*
+G37*
+G36*
+X252800D02*X249200D01*
+Y627950D01*
+X252800D01*
+Y636450D01*
+G37*
+G36*
+X214750Y685500D02*Y644500D01*
+X257250D01*
+Y685500D01*
+X214750D01*
+G37*
+G36*
+X291543Y631549D02*X289543D01*
+Y623049D01*
+X291543D01*
+Y631549D01*
+G37*
+G36*
+X296543D02*X294543D01*
+Y623049D01*
+X296543D01*
+Y631549D01*
+G37*
+G36*
+X301543D02*X299543D01*
+Y623049D01*
+X301543D01*
+Y631549D01*
+G37*
+G36*
+X306543D02*X304543D01*
+Y623049D01*
+X306543D01*
+Y631549D01*
+G37*
+G36*
+Y652049D02*X304543D01*
+Y643549D01*
+X306543D01*
+Y652049D01*
+G37*
+G36*
+X301543D02*X299543D01*
+Y643549D01*
+X301543D01*
+Y652049D01*
+G37*
+G36*
+X296543D02*X294543D01*
+Y643549D01*
+X296543D01*
+Y652049D01*
+G37*
+G36*
+X291543D02*X289543D01*
+Y643549D01*
+X291543D01*
+Y652049D01*
+G37*
+G36*
+X312516Y606952D02*X307398D01*
+Y601048D01*
+X312516D01*
+Y606952D01*
+G37*
+G36*
+X319602D02*X314484D01*
+Y601048D01*
+X319602D01*
+Y606952D01*
+G37*
+G36*
+X271048Y639688D02*Y634570D01*
+X276952D01*
+Y639688D01*
+X271048D01*
+G37*
+G36*
+Y632602D02*Y627484D01*
+X276952D01*
+Y632602D01*
+X271048D01*
+G37*
+G36*
+X202602Y696452D02*X197484D01*
+Y690548D01*
+X202602D01*
+Y696452D01*
+G37*
+G36*
+X195516D02*X190398D01*
+Y690548D01*
+X195516D01*
+Y696452D01*
+G37*
+G36*
+X379016Y607952D02*X373898D01*
+Y602048D01*
+X379016D01*
+Y607952D01*
+G37*
+G36*
+X386102D02*X380984D01*
+Y602048D01*
+X386102D01*
+Y607952D01*
+G37*
+G36*
+X291772Y607418D02*Y602300D01*
+X299252D01*
+Y607418D01*
+X291772D01*
+G37*
+G36*
+Y619228D02*Y614110D01*
+X299252D01*
+Y619228D01*
+X291772D01*
+G37*
+G36*
+X324602Y628952D02*X319484D01*
+Y623048D01*
+X324602D01*
+Y628952D01*
+G37*
+G36*
+X331688D02*X326570D01*
+Y623048D01*
+X331688D01*
+Y628952D01*
+G37*
+G36*
+X369050Y620100D02*Y612200D01*
+X376950D01*
+Y620100D01*
+X369050D01*
+G37*
+G36*
+Y635800D02*Y627900D01*
+X376950D01*
+Y635800D01*
+X369050D01*
+G37*
+G36*
+X361102Y600952D02*X355984D01*
+Y595048D01*
+X361102D01*
+Y600952D01*
+G37*
+G36*
+X354016D02*X348898D01*
+Y595048D01*
+X354016D01*
+Y600952D01*
+G37*
+G36*
+X361102Y610452D02*X355984D01*
+Y604548D01*
+X361102D01*
+Y610452D01*
+G37*
+G36*
+X354016D02*X348898D01*
+Y604548D01*
+X354016D01*
+Y610452D01*
+G37*
+G36*
+X361102Y629452D02*X355984D01*
+Y623548D01*
+X361102D01*
+Y629452D01*
+G37*
+G36*
+X354016D02*X348898D01*
+Y623548D01*
+X354016D01*
+Y629452D01*
+G37*
+G36*
+X361102Y619952D02*X355984D01*
+Y614048D01*
+X361102D01*
+Y619952D01*
+G37*
+G36*
+X354016D02*X348898D01*
+Y614048D01*
+X354016D01*
+Y619952D01*
+G37*
+G36*
+X312516Y597452D02*X307398D01*
+Y591548D01*
+X312516D01*
+Y597452D01*
+G37*
+G36*
+X319602D02*X314484D01*
+Y591548D01*
+X319602D01*
+Y597452D01*
+G37*
+G36*
+X184512Y647642D02*X173488D01*
+Y627169D01*
+X184512D01*
+Y647642D01*
+G37*
+G36*
+Y685831D02*X173488D01*
+Y665358D01*
+X184512D01*
+Y685831D01*
+G37*
+G36*
+X340102Y606952D02*X334984D01*
+Y601048D01*
+X340102D01*
+Y606952D01*
+G37*
+G36*
+X333016D02*X327898D01*
+Y601048D01*
+X333016D01*
+Y606952D01*
+G37*
+G36*
+X337505Y636645D02*Y631527D01*
+X343409D01*
+Y636645D01*
+X337505D01*
+G37*
+G36*
+Y629559D02*Y624441D01*
+X343409D01*
+Y629559D01*
+X337505D01*
+G37*
+G36*
+X353866Y638952D02*X348748D01*
+Y633048D01*
+X353866D01*
+Y638952D01*
+G37*
+G36*
+X360952D02*X355834D01*
+Y633048D01*
+X360952D01*
+Y638952D01*
+G37*
+G36*
+X247559Y618452D02*X242441D01*
+Y612548D01*
+X247559D01*
+Y618452D01*
+G37*
+G36*
+X240473D02*X235355D01*
+Y612548D01*
+X240473D01*
+Y618452D01*
+G37*
+G36*
+X234591Y720473D02*Y715355D01*
+X240495D01*
+Y720473D01*
+X234591D01*
+G37*
+G36*
+Y727559D02*Y722441D01*
+X240495D01*
+Y727559D01*
+X234591D01*
+G37*
+G36*
+X209645Y720452D02*X204527D01*
+Y714548D01*
+X209645D01*
+Y720452D01*
+G37*
+G36*
+X202559D02*X197441D01*
+Y714548D01*
+X202559D01*
+Y720452D01*
+G37*
+G36*
+X355197Y675512D02*Y664488D01*
+X375669D01*
+Y675512D01*
+X355197D01*
+G37*
+G36*
+X317008D02*Y664488D01*
+X337480D01*
+Y675512D01*
+X317008D01*
+G37*
+G36*
+X319863Y736915D02*X315363D01*
+Y729915D01*
+X319863D01*
+Y736915D01*
+G37*
+G36*
+X331863D02*X327363D01*
+Y729915D01*
+X331863D01*
+Y736915D01*
+G37*
+G36*
+X293685Y723211D02*Y718711D01*
+X300685D01*
+Y723211D01*
+X293685D01*
+G37*
+G36*
+Y711211D02*Y706711D01*
+X300685D01*
+Y711211D01*
+X293685D01*
+G37*
+G36*
+X380368Y703244D02*Y701244D01*
+X388868D01*
+Y703244D01*
+X380368D01*
+G37*
+G36*
+Y698244D02*Y696244D01*
+X388868D01*
+Y698244D01*
+X380368D01*
+G37*
+G36*
+Y693244D02*Y691244D01*
+X388868D01*
+Y693244D01*
+X380368D01*
+G37*
+G36*
+Y688244D02*Y686244D01*
+X388868D01*
+Y688244D01*
+X380368D01*
+G37*
+G36*
+X400868D02*Y686244D01*
+X409368D01*
+Y688244D01*
+X400868D01*
+G37*
+G36*
+Y693244D02*Y691244D01*
+X409368D01*
+Y693244D01*
+X400868D01*
+G37*
+G36*
+Y698244D02*Y696244D01*
+X409368D01*
+Y698244D01*
+X400868D01*
+G37*
+G36*
+Y703244D02*Y701244D01*
+X409368D01*
+Y703244D01*
+X400868D01*
+G37*
+G36*
+X380516Y724303D02*Y722303D01*
+X389016D01*
+Y724303D01*
+X380516D01*
+G37*
+G36*
+Y719303D02*Y717303D01*
+X389016D01*
+Y719303D01*
+X380516D01*
+G37*
+G36*
+Y714303D02*Y712303D01*
+X389016D01*
+Y714303D01*
+X380516D01*
+G37*
+G36*
+Y709303D02*Y707303D01*
+X389016D01*
+Y709303D01*
+X380516D01*
+G37*
+G36*
+X401016D02*Y707303D01*
+X409516D01*
+Y709303D01*
+X401016D01*
+G37*
+G36*
+Y714303D02*Y712303D01*
+X409516D01*
+Y714303D01*
+X401016D01*
+G37*
+G36*
+Y719303D02*Y717303D01*
+X409516D01*
+Y719303D01*
+X401016D01*
+G37*
+G36*
+Y724303D02*Y722303D01*
+X409516D01*
+Y724303D01*
+X401016D01*
+G37*
+G36*
+X446689Y566411D02*Y561211D01*
+X453889D01*
+Y566411D01*
+X446689D01*
+G37*
+G36*
+Y584411D02*Y579211D01*
+X453889D01*
+Y584411D01*
+X446689D01*
+G37*
+G36*
+X438189Y584061D02*X416189D01*
+Y561561D01*
+X438189D01*
+Y584061D01*
+G37*
+G36*
+X404252Y609318D02*X399134D01*
+Y603414D01*
+X404252D01*
+Y609318D01*
+G37*
+G36*
+X411338D02*X406220D01*
+Y603414D01*
+X411338D01*
+Y609318D01*
+G37*
+G36*
+X273820Y679697D02*Y674579D01*
+X279724D01*
+Y679697D01*
+X273820D01*
+G37*
+G36*
+Y672611D02*Y667493D01*
+X279724D01*
+Y672611D01*
+X273820D01*
+G37*
+G36*
+Y687178D02*Y682060D01*
+X279724D01*
+Y687178D01*
+X273820D01*
+G37*
+G36*
+Y694264D02*Y689146D01*
+X279724D01*
+Y694264D01*
+X273820D01*
+G37*
+G36*
+X332598Y612037D02*Y610987D01*
+X336248D01*
+Y612037D01*
+X332598D01*
+G37*
+G36*
+Y614006D02*Y612956D01*
+X336248D01*
+Y614006D01*
+X332598D01*
+G37*
+G36*
+Y615974D02*Y614924D01*
+X336248D01*
+Y615974D01*
+X332598D01*
+G37*
+G36*
+Y617943D02*Y616893D01*
+X336248D01*
+Y617943D01*
+X332598D01*
+G37*
+G36*
+Y619911D02*Y618861D01*
+X336248D01*
+Y619911D01*
+X332598D01*
+G37*
+G36*
+X316098D02*Y618861D01*
+X319748D01*
+Y619911D01*
+X316098D01*
+G37*
+G36*
+Y617943D02*Y616893D01*
+X319748D01*
+Y617943D01*
+X316098D01*
+G37*
+G36*
+Y615974D02*Y614924D01*
+X319748D01*
+Y615974D01*
+X316098D01*
+G37*
+G36*
+Y614006D02*Y612956D01*
+X319748D01*
+Y614006D01*
+X316098D01*
+G37*
+G36*
+X316073Y612062D02*Y610962D01*
+X319773D01*
+Y612062D01*
+X316073D01*
+G37*
+G36*
+X306498Y724792D02*Y719192D01*
+X318698D01*
+Y724792D01*
+X306498D01*
+G37*
+G36*
+Y715792D02*Y710192D01*
+X318698D01*
+Y715792D01*
+X306498D01*
+G37*
+G36*
+Y706692D02*Y701092D01*
+X318698D01*
+Y706692D01*
+X306498D01*
+G37*
+G36*
+X343098Y723592D02*X330898D01*
+Y702392D01*
+X343098D01*
+Y723592D01*
+G37*
+G36*
+X380500Y745200D02*Y743200D01*
+X389000D01*
+Y745200D01*
+X380500D01*
+G37*
+G36*
+Y740200D02*Y738200D01*
+X389000D01*
+Y740200D01*
+X380500D01*
+G37*
+G36*
+Y735200D02*Y733200D01*
+X389000D01*
+Y735200D01*
+X380500D01*
+G37*
+G36*
+Y730200D02*Y728200D01*
+X389000D01*
+Y730200D01*
+X380500D01*
+G37*
+G36*
+X401000D02*Y728200D01*
+X409500D01*
+Y730200D01*
+X401000D01*
+G37*
+G36*
+Y735200D02*Y733200D01*
+X409500D01*
+Y735200D01*
+X401000D01*
+G37*
+G36*
+Y740200D02*Y738200D01*
+X409500D01*
+Y740200D01*
+X401000D01*
+G37*
+G36*
+Y745200D02*Y743200D01*
+X409500D01*
+Y745200D01*
+X401000D01*
+G37*
+M02*
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.topsilk.gbr b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.topsilk.gbr
new file mode 100644
index 0000000..fda9bd1
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.topsilk.gbr
@@ -0,0 +1,1755 @@
+G04 start of page 10 for group -4079 idx -4079 *
+G04 Title: RspPiPS, topsilk *
+G04 Creator: pcb 4.2.0 *
+G04 CreationDate: Sun Jan 23 00:25:27 2022 UTC *
+G04 For: debian *
+G04 Format: Gerber/RS-274X *
+G04 PCB-Dimensions (mil): 10000.00 10000.00 *
+G04 PCB-Coordinate-Origin: lower left *
+%MOIN*%
+%FSLAX25Y25*%
+%LNTOPSILK*%
+%ADD106C,0.0050*%
+%ADD105C,0.0080*%
+%ADD104C,0.0060*%
+%ADD103C,0.0100*%
+G54D103*X234500Y729000D02*X240500D01*
+X273884Y695409D02*X279884D01*
+G54D104*X345500Y561000D02*Y593500D01*
+X343500Y591500D01*
+X345500Y593500D02*X347500Y591500D01*
+X456193Y596942D02*Y610721D01*
+X454224Y608753D01*
+X456193Y610721D02*X458161Y608753D01*
+X423500Y744700D02*X435500D01*
+X438000Y742200D01*
+X427000Y758600D02*X435100D01*
+X438700Y755000D01*
+G54D105*X232002Y710393D02*X234002D01*
+X233002Y711393D02*Y709393D01*
+X235202Y712393D02*X237202D01*
+X235202D02*Y710393D01*
+X235702Y710893D01*
+X236702D01*
+X237202Y710393D01*
+Y708893D01*
+X236702Y708393D02*X237202Y708893D01*
+X235702Y708393D02*X236702D01*
+X235202Y708893D02*X235702Y708393D01*
+X238402Y712393D02*X239402Y708393D01*
+X240402Y712393D01*
+X262312Y706112D02*X263312Y702112D01*
+X264312Y706112D01*
+X265512Y702112D02*X267512D01*
+X268712Y706112D02*Y702112D01*
+Y706112D02*X270212Y704112D01*
+X271712Y706112D01*
+Y702112D01*
+X272912Y706112D02*X273912D01*
+X273412D02*Y702112D01*
+X272912D02*X273912D01*
+X275612Y706112D02*Y702112D01*
+X276912Y706112D02*X277612Y705412D01*
+Y702812D01*
+X276912Y702112D02*X277612Y702812D01*
+X275112Y702112D02*X276912D01*
+X275112Y706112D02*X276912D01*
+X348270Y708300D02*X351665D01*
+X352150Y708785D01*
+Y709755D02*Y708785D01*
+Y709755D02*X351665Y710240D01*
+X348270D02*X351665D01*
+X350695Y711404D02*X348270Y713344D01*
+X350695Y713829D02*Y711404D01*
+X348270Y713344D02*X352150D01*
+X351665Y714993D02*X352150Y715478D01*
+X348755Y714993D02*X351665D01*
+X348755D02*X348270Y715478D01*
+Y716448D02*Y715478D01*
+Y716448D02*X348755Y716933D01*
+X351665D01*
+X352150Y716448D02*X351665Y716933D01*
+X352150Y716448D02*Y715478D01*
+X351180Y714993D02*X349240Y716933D01*
+X350695Y718097D02*X348270Y720037D01*
+X350695Y720522D02*Y718097D01*
+X348270Y720037D02*X352150D01*
+X406200Y661700D02*X408200D01*
+X407200Y662700D02*Y660700D01*
+X400811Y620630D02*X401811Y616630D01*
+X402811Y620630D01*
+X404011Y616630D02*X406011D01*
+X407211Y620630D02*X408211D01*
+X407711D02*Y616630D01*
+X407211D02*X408211D01*
+X409411Y620630D02*Y616630D01*
+Y620630D02*X411911Y616630D01*
+Y620630D02*Y616630D01*
+X459866Y602913D02*X460866Y598913D01*
+X461866Y602913D01*
+X463066Y598913D02*X465066D01*
+X466266Y602913D02*X467266D01*
+X466766D02*Y598913D01*
+X466266D02*X467266D01*
+X468466Y602913D02*Y598913D01*
+Y602913D02*X470966Y598913D01*
+Y602913D02*Y598913D01*
+X461342Y606567D02*X462642D01*
+X460642Y607267D02*X461342Y606567D01*
+X460642Y609867D02*Y607267D01*
+Y609867D02*X461342Y610567D01*
+X462642D01*
+X463842Y610067D02*Y607067D01*
+Y610067D02*X464342Y610567D01*
+X465342D01*
+X465842Y610067D01*
+Y607067D01*
+X465342Y606567D02*X465842Y607067D01*
+X464342Y606567D02*X465342D01*
+X463842Y607067D02*X464342Y606567D01*
+X467042Y610567D02*Y606567D01*
+Y610567D02*X468542Y608567D01*
+X470042Y610567D01*
+Y606567D01*
+X438900Y672700D02*Y668700D01*
+X441400Y672700D02*Y668700D01*
+X438900Y670700D02*X441400D01*
+X429800Y672700D02*Y668700D01*
+X431800D01*
+X418700Y728600D02*Y724600D01*
+X420000Y728600D02*X420700Y727900D01*
+Y725300D01*
+X420000Y724600D02*X420700Y725300D01*
+X418200Y724600D02*X420000D01*
+X418200Y728600D02*X420000D01*
+X421900D02*X423900D01*
+X424400Y728100D01*
+Y727100D01*
+X423900Y726600D02*X424400Y727100D01*
+X422400Y726600D02*X423900D01*
+X422400Y728600D02*Y724600D01*
+X423200Y726600D02*X424400Y724600D01*
+X412700Y705000D02*Y701000D01*
+Y705000D02*X414200Y703000D01*
+X415700Y705000D01*
+Y701000D01*
+X416900Y705000D02*X417900D01*
+X417400D02*Y701000D01*
+X416900D02*X417900D01*
+X421100Y705000D02*X421600Y704500D01*
+X419600Y705000D02*X421100D01*
+X419100Y704500D02*X419600Y705000D01*
+X419100Y704500D02*Y703500D01*
+X419600Y703000D01*
+X421100D01*
+X421600Y702500D01*
+Y701500D01*
+X421100Y701000D02*X421600Y701500D01*
+X419600Y701000D02*X421100D01*
+X419100Y701500D02*X419600Y701000D01*
+X422800Y704500D02*Y701500D01*
+Y704500D02*X423300Y705000D01*
+X424300D01*
+X424800Y704500D01*
+Y701500D01*
+X424300Y701000D02*X424800Y701500D01*
+X423300Y701000D02*X424300D01*
+X422800Y701500D02*X423300Y701000D01*
+X412800Y716800D02*Y712800D01*
+Y716800D02*X414300Y714800D01*
+X415800Y716800D01*
+Y712800D01*
+X417000Y716300D02*Y713300D01*
+Y716300D02*X417500Y716800D01*
+X418500D01*
+X419000Y716300D01*
+Y713300D01*
+X418500Y712800D02*X419000Y713300D01*
+X417500Y712800D02*X418500D01*
+X417000Y713300D02*X417500Y712800D01*
+X422200Y716800D02*X422700Y716300D01*
+X420700Y716800D02*X422200D01*
+X420200Y716300D02*X420700Y716800D01*
+X420200Y716300D02*Y715300D01*
+X420700Y714800D01*
+X422200D01*
+X422700Y714300D01*
+Y713300D01*
+X422200Y712800D02*X422700Y713300D01*
+X420700Y712800D02*X422200D01*
+X420200Y713300D02*X420700Y712800D01*
+X423900Y716800D02*X424900D01*
+X424400D02*Y712800D01*
+X423900D02*X424900D01*
+X419400Y677300D02*X420700D01*
+X418700Y678000D02*X419400Y677300D01*
+X418700Y680600D02*Y678000D01*
+Y680600D02*X419400Y681300D01*
+X420700D01*
+X423900D02*X424400Y680800D01*
+X422400Y681300D02*X423900D01*
+X421900Y680800D02*X422400Y681300D01*
+X421900Y680800D02*Y679800D01*
+X422400Y679300D01*
+X423900D01*
+X424400Y678800D01*
+Y677800D01*
+X423900Y677300D02*X424400Y677800D01*
+X422400Y677300D02*X423900D01*
+X421900Y677800D02*X422400Y677300D01*
+X417600Y693100D02*X418100Y692600D01*
+X416100Y693100D02*X417600D01*
+X415600Y692600D02*X416100Y693100D01*
+X415600Y692600D02*Y691600D01*
+X416100Y691100D01*
+X417600D01*
+X418100Y690600D01*
+Y689600D01*
+X417600Y689100D02*X418100Y689600D01*
+X416100Y689100D02*X417600D01*
+X415600Y689600D02*X416100Y689100D01*
+X420000D02*X421300D01*
+X419300Y689800D02*X420000Y689100D01*
+X419300Y692400D02*Y689800D01*
+Y692400D02*X420000Y693100D01*
+X421300D01*
+X422500D02*Y689100D01*
+Y691100D02*X424500Y693100D01*
+X422500Y691100D02*X424500Y689100D01*
+X416400Y746400D02*X418400D01*
+X416400D02*Y744400D01*
+X416900Y744900D01*
+X417900D01*
+X418400Y744400D01*
+Y742900D01*
+X417900Y742400D02*X418400Y742900D01*
+X416900Y742400D02*X417900D01*
+X416400Y742900D02*X416900Y742400D01*
+X419600Y746400D02*X420600Y742400D01*
+X421600Y746400D01*
+X416200Y759800D02*X417000Y760600D01*
+Y756600D01*
+X416200D02*X417700D01*
+X418900Y760100D02*X419400Y760600D01*
+X420900D01*
+X421400Y760100D01*
+Y759100D01*
+X418900Y756600D02*X421400Y759100D01*
+X418900Y756600D02*X421400D01*
+X422600Y760600D02*X423600Y756600D01*
+X424600Y760600D01*
+X417000Y752100D02*X417500Y751600D01*
+X415500Y752100D02*X417000D01*
+X415000Y751600D02*X415500Y752100D01*
+X415000Y751600D02*Y748600D01*
+X415500Y748100D01*
+X417000D01*
+X417500Y748600D01*
+Y749600D02*Y748600D01*
+X417000Y750100D02*X417500Y749600D01*
+X416000Y750100D02*X417000D01*
+X418700Y752100D02*Y748100D01*
+Y752100D02*X421200Y748100D01*
+Y752100D02*Y748100D01*
+X422900Y752100D02*Y748100D01*
+X424200Y752100D02*X424900Y751400D01*
+Y748800D01*
+X424200Y748100D02*X424900Y748800D01*
+X422400Y748100D02*X424200D01*
+X422400Y752100D02*X424200D01*
+X417200Y740200D02*X417700Y739700D01*
+X415700Y740200D02*X417200D01*
+X415200Y739700D02*X415700Y740200D01*
+X415200Y739700D02*Y736700D01*
+X415700Y736200D01*
+X417200D01*
+X417700Y736700D01*
+Y737700D02*Y736700D01*
+X417200Y738200D02*X417700Y737700D01*
+X416200Y738200D02*X417200D01*
+X418900Y740200D02*Y736200D01*
+Y740200D02*X421400Y736200D01*
+Y740200D02*Y736200D01*
+X423100Y740200D02*Y736200D01*
+X424400Y740200D02*X425100Y739500D01*
+Y736900D01*
+X424400Y736200D02*X425100Y736900D01*
+X422600Y736200D02*X424400D01*
+X422600Y740200D02*X424400D01*
+X496900Y763100D02*X497400Y762600D01*
+X495400Y763100D02*X496900D01*
+X494900Y762600D02*X495400Y763100D01*
+X494900Y762600D02*Y759600D01*
+X495400Y759100D01*
+X496900D01*
+X497400Y759600D01*
+Y760600D02*Y759600D01*
+X496900Y761100D02*X497400Y760600D01*
+X495900Y761100D02*X496900D01*
+X230500Y603000D02*X232500D01*
+X231500Y604000D02*Y602000D01*
+X192500Y709500D02*X194500D01*
+X193500Y710500D02*Y708500D01*
+X171000Y589000D02*X172000Y585000D01*
+X173000Y589000D01*
+X174200Y585000D02*X176200D01*
+X177400Y589000D02*Y585000D01*
+Y589000D02*X178900Y587000D01*
+X180400Y589000D01*
+Y585000D01*
+X181600Y589000D02*X182600D01*
+X182100D02*Y585000D01*
+X181600D02*X182600D01*
+X184300Y589000D02*Y585000D01*
+X185600Y589000D02*X186300Y588300D01*
+Y585700D01*
+X185600Y585000D02*X186300Y585700D01*
+X183800Y585000D02*X185600D01*
+X183800Y589000D02*X185600D01*
+X154700Y585500D02*X156000D01*
+X154000Y586200D02*X154700Y585500D01*
+X154000Y588800D02*Y586200D01*
+Y588800D02*X154700Y589500D01*
+X156000D01*
+X157200Y589000D02*Y586000D01*
+Y589000D02*X157700Y589500D01*
+X158700D01*
+X159200Y589000D01*
+Y586000D01*
+X158700Y585500D02*X159200Y586000D01*
+X157700Y585500D02*X158700D01*
+X157200Y586000D02*X157700Y585500D01*
+X160400Y589500D02*Y585500D01*
+Y589500D02*X161900Y587500D01*
+X163400Y589500D01*
+Y585500D01*
+X266000Y618500D02*X268000D01*
+X267000Y619500D02*Y617500D01*
+X291500Y596000D02*X293500D01*
+X292500Y597000D02*Y595000D01*
+X173000Y732000D02*X175000D01*
+X174000Y733000D02*Y731000D01*
+X176200Y734000D02*X178200D01*
+X176200D02*Y732000D01*
+X176700Y732500D01*
+X177700D01*
+X178200Y732000D01*
+Y730500D01*
+X177700Y730000D02*X178200Y730500D01*
+X176700Y730000D02*X177700D01*
+X176200Y730500D02*X176700Y730000D01*
+X179400Y734000D02*X180400Y730000D01*
+X181400Y734000D01*
+X148239Y730394D02*X149539D01*
+X147539Y731094D02*X148239Y730394D01*
+X147539Y733694D02*Y731094D01*
+Y733694D02*X148239Y734394D01*
+X149539D01*
+X150739Y733894D02*Y730894D01*
+Y733894D02*X151239Y734394D01*
+X152239D01*
+X152739Y733894D01*
+Y730894D01*
+X152239Y730394D02*X152739Y730894D01*
+X151239Y730394D02*X152239D01*
+X150739Y730894D02*X151239Y730394D01*
+X153939Y734394D02*Y730394D01*
+Y734394D02*X155439Y732394D01*
+X156939Y734394D01*
+Y730394D01*
+X175429Y567567D02*X177429D01*
+X177929Y567067D01*
+Y566067D01*
+X177429Y565567D02*X177929Y566067D01*
+X175929Y565567D02*X177429D01*
+X175929Y567567D02*Y563567D01*
+X176729Y565567D02*X177929Y563567D01*
+X179129Y565767D02*X180629D01*
+X179129Y563567D02*X181129D01*
+X179129Y567567D02*Y563567D01*
+Y567567D02*X181129D01*
+X182329D02*X183329Y563567D01*
+X184329Y567567D01*
+X187329Y567067D02*X187829Y567567D01*
+X188829D01*
+X189329Y567067D01*
+X188829Y563567D02*X189329Y564067D01*
+X187829Y563567D02*X188829D01*
+X187329Y564067D02*X187829Y563567D01*
+Y565767D02*X188829D01*
+X189329Y567067D02*Y566267D01*
+Y565267D02*Y564067D01*
+Y565267D02*X188829Y565767D01*
+X189329Y566267D02*X188829Y565767D01*
+X175429Y572067D02*X176929Y574067D01*
+Y575567D02*Y574067D01*
+X176429Y576067D02*X176929Y575567D01*
+X175429Y576067D02*X176429D01*
+X174929Y575567D02*X175429Y576067D01*
+X174929Y575567D02*Y574567D01*
+X175429Y574067D01*
+X176929D01*
+X178629Y572067D02*X180629Y576067D01*
+X178129D02*X180629D01*
+X181829Y575267D02*X182629Y576067D01*
+Y572067D01*
+X181829D02*X183329D01*
+X186829Y576067D02*Y572067D01*
+X186329Y576067D02*X188329D01*
+X188829Y575567D01*
+Y574567D01*
+X188329Y574067D02*X188829Y574567D01*
+X186829Y574067D02*X188329D01*
+X190029Y576067D02*X191029D01*
+X190529D02*Y572067D01*
+X190029D02*X191029D01*
+X192229Y573567D02*X194229Y576067D01*
+X192229Y573567D02*X194729D01*
+X194229Y576067D02*Y572067D01*
+X198229Y576067D02*Y572067D01*
+X197729Y576067D02*X199729D01*
+X200229Y575567D01*
+Y574567D01*
+X199729Y574067D02*X200229Y574567D01*
+X198229Y574067D02*X199729D01*
+X201429Y575567D02*Y572567D01*
+Y575567D02*X201929Y576067D01*
+X202929D01*
+X203429Y575567D01*
+Y572567D01*
+X202929Y572067D02*X203429Y572567D01*
+X201929Y572067D02*X202929D01*
+X201429Y572567D02*X201929Y572067D01*
+X204629Y576067D02*Y574067D01*
+X205129Y572067D01*
+X206129Y574067D01*
+X207129Y572067D01*
+X207629Y574067D01*
+Y576067D02*Y574067D01*
+X208829Y574267D02*X210329D01*
+X208829Y572067D02*X210829D01*
+X208829Y576067D02*Y572067D01*
+Y576067D02*X210829D01*
+X212029D02*X214029D01*
+X214529Y575567D01*
+Y574567D01*
+X214029Y574067D02*X214529Y574567D01*
+X212529Y574067D02*X214029D01*
+X212529Y576067D02*Y572067D01*
+X213329Y574067D02*X214529Y572067D01*
+X201500Y567000D02*X202000Y567500D01*
+X203500D01*
+X204000Y567000D01*
+Y566000D01*
+X201500Y563500D02*X204000Y566000D01*
+X201500Y563500D02*X204000D01*
+X205200Y564000D02*X205700Y563500D01*
+X205200Y567000D02*Y564000D01*
+Y567000D02*X205700Y567500D01*
+X206700D01*
+X207200Y567000D01*
+Y564000D01*
+X206700Y563500D02*X207200Y564000D01*
+X205700Y563500D02*X206700D01*
+X205200Y564500D02*X207200Y566500D01*
+X208400Y567000D02*X208900Y567500D01*
+X210400D01*
+X210900Y567000D01*
+Y566000D01*
+X208400Y563500D02*X210900Y566000D01*
+X208400Y563500D02*X210900D01*
+X212100Y567000D02*X212600Y567500D01*
+X214100D01*
+X214600Y567000D01*
+Y566000D01*
+X212100Y563500D02*X214600Y566000D01*
+X212100Y563500D02*X214600D01*
+G54D104*X164961Y727283D02*G75*G03X169961Y732283I0J5000D01*G01*
+G75*G03X164961Y737283I-5000J0D01*G01*
+G75*G03X159961Y732283I0J-5000D01*G01*
+G75*G03X164961Y727283I5000J0D01*G01*
+G54D105*X185457Y709276D02*X188409D01*
+X186933Y710752D02*Y707799D01*
+X173646Y692543D02*G75*G03X173646Y692543I0J16732D01*G01*
+X196107Y690745D02*X196893D01*
+X196107Y696255D02*X196893D01*
+X234788Y721850D02*Y721064D01*
+X240298Y721850D02*Y721064D01*
+X203150Y714745D02*X203936D01*
+X203150Y720255D02*X203936D01*
+G54D104*X188000Y727000D02*G75*G03X193000Y732000I0J5000D01*G01*
+G75*G03X188000Y737000I-5000J0D01*G01*
+G75*G03X183000Y732000I0J-5000D01*G01*
+G75*G03X188000Y727000I5000J0D01*G01*
+G54D103*X169700Y751800D02*X369700D01*
+Y771800D02*Y751800D01*
+X169700Y771800D02*X369700D01*
+X169700D02*Y751800D01*
+X179700Y761800D02*Y751800D01*
+X169700Y761800D02*X179700D01*
+X304098Y727192D02*X345498D01*
+X304098D02*Y698692D01*
+X345498D01*
+Y727192D02*Y698692D01*
+G54D105*X379607Y607755D02*X380393D01*
+X379607Y602245D02*X380393D01*
+G54D103*X368000Y621600D02*X378000D01*
+G54D105*X354607Y595245D02*X355393D01*
+X354607Y600755D02*X355393D01*
+X333607Y601245D02*X334393D01*
+X333607Y606755D02*X334393D01*
+X354607Y604745D02*X355393D01*
+X354607Y610255D02*X355393D01*
+X354607Y614245D02*X355393D01*
+X354607Y619755D02*X355393D01*
+G54D104*X394736Y613866D02*G75*G03X399736Y618866I0J5000D01*G01*
+G75*G03X394736Y623866I-5000J0D01*G01*
+G75*G03X389736Y618866I0J-5000D01*G01*
+G75*G03X394736Y613866I5000J0D01*G01*
+G54D105*X407236Y656630D02*Y653677D01*
+X405760Y655154D02*X408713D01*
+X423969Y641866D02*G75*G03X423969Y641866I-16732J0D01*G01*
+X428862Y643236D02*Y612921D01*
+Y643236D02*X476106D01*
+Y612921D01*
+X428862D02*X476106D01*
+G54D103*X413939Y586811D02*X455539D01*
+X413939D02*Y558811D01*
+X455539D01*
+Y586811D02*Y558811D01*
+G54D105*X404843Y609121D02*X405629D01*
+X404843Y603611D02*X405629D01*
+X267000Y613264D02*Y610311D01*
+X265524Y611787D02*X268476D01*
+X283732Y598500D02*G75*G03X283732Y598500I-16732J0D01*G01*
+X276755Y633979D02*Y633193D01*
+X271245Y633979D02*Y633193D01*
+X279527Y673988D02*Y673202D01*
+X274017Y673988D02*Y673202D01*
+Y688555D02*Y687769D01*
+X279527Y688555D02*Y687769D01*
+G54D104*X159500Y591000D02*G75*G03X164500Y596000I0J5000D01*G01*
+G75*G03X159500Y601000I-5000J0D01*G01*
+G75*G03X154500Y596000I0J-5000D01*G01*
+G75*G03X159500Y591000I5000J0D01*G01*
+X179500D02*G75*G03X184500Y596000I0J5000D01*G01*
+G75*G03X179500Y601000I-5000J0D01*G01*
+G75*G03X174500Y596000I0J-5000D01*G01*
+G75*G03X179500Y591000I5000J0D01*G01*
+G54D103*X160890Y625594D02*X204984D01*
+X153016Y687406D02*X204984D01*
+Y625594D01*
+X153016Y687406D02*Y633469D01*
+X160890Y625594D02*X153016Y633469D01*
+X213250Y626450D02*X258750D01*
+X213250D02*Y687000D01*
+X258750Y626450D02*Y687000D01*
+X213250D02*X258750D01*
+G54D105*X224346Y605799D02*X227299D01*
+X225823Y607276D02*Y604323D01*
+X212535Y589067D02*G75*G03X212535Y589067I0J16732D01*G01*
+X241064Y612745D02*X241850D01*
+X241064Y618255D02*X241850D01*
+X313107Y606755D02*X313893D01*
+X313107Y601245D02*X313893D01*
+X313107Y597255D02*X313893D01*
+X313107Y591745D02*X313893D01*
+X295949Y591642D02*Y588689D01*
+X294472Y590165D02*X297425D01*
+X312681Y576878D02*G75*G03X312681Y576878I-16732J0D01*G01*
+X354607Y623745D02*X355393D01*
+X354607Y629255D02*X355393D01*
+X343212Y630936D02*Y630150D01*
+X337702Y630936D02*Y630150D01*
+X354457Y638755D02*X355243D01*
+X354457Y633245D02*X355243D01*
+G54D103*X288543Y622049D02*X307543D01*
+Y653049D02*Y622049D01*
+X288543Y653049D02*X307543D01*
+X288543Y635049D02*Y622049D01*
+Y653049D02*Y640049D01*
+Y635049D02*G75*G03X288543Y640049I0J2500D01*G01*
+G54D105*X291772Y613126D02*Y608402D01*
+X299252Y613126D02*Y608402D01*
+X325193Y628755D02*X325979D01*
+X325193Y623245D02*X325979D01*
+G54D103*X377244Y695984D02*Y651890D01*
+X315433Y695984D02*Y644016D01*
+Y695984D02*X377244D01*
+X315433Y644016D02*X369370D01*
+X377244Y651890D02*X369370Y644016D01*
+G54D106*X314113Y738165D02*X333113D01*
+Y728565D01*
+X314113D01*
+Y738165D01*
+X301935Y724461D02*Y705461D01*
+X292335D02*X301935D01*
+X292335Y724461D02*Y705461D01*
+Y724461D02*X301935D01*
+G54D103*X328123Y609612D02*X337323D01*
+X315023D02*X324323D01*
+X315023Y621412D02*Y609612D01*
+Y621412D02*X337323D01*
+Y609612D01*
+X328123D02*G75*G03X324323Y609612I-1900J0D01*G01*
+X441461Y765220D02*X438961Y771220D01*
+X443961D01*
+X441461Y765220D01*
+X428390Y665205D02*X476579D01*
+Y764220D02*Y665205D01*
+X428390Y764220D02*X476579D01*
+X428390D02*Y754207D01*
+Y746085D02*Y742396D01*
+Y734274D02*Y730585D01*
+Y722463D02*Y718774D01*
+Y710652D02*Y706963D01*
+Y698841D02*Y695152D01*
+Y687030D02*Y683341D01*
+Y675219D02*Y665205D01*
+X379368Y704244D02*Y685244D01*
+X410368D01*
+Y704244D01*
+X379368D02*X392368D01*
+X410368D02*X397368D01*
+X392368D02*G75*G03X397368Y704244I2500J0D01*G01*
+X379516Y725303D02*Y706303D01*
+X410516D01*
+Y725303D01*
+X379516D02*X392516D01*
+X410516D02*X397516D01*
+X392516D02*G75*G03X397516Y725303I2500J0D01*G01*
+X379500Y746200D02*Y727200D01*
+X410500D01*
+Y746200D01*
+X379500D02*X392500D01*
+X410500D02*X397500D01*
+X392500D02*G75*G03X397500Y746200I2500J0D01*G01*
+G54D105*X397700Y753600D02*Y750100D01*
+X398200Y749600D01*
+X399200D01*
+X399700Y750100D01*
+Y753600D02*Y750100D01*
+X400900Y751100D02*X402900Y753600D01*
+X400900Y751100D02*X403400D01*
+X402900Y753600D02*Y749600D01*
+X404600Y750100D02*X405100Y749600D01*
+X404600Y753100D02*Y750100D01*
+Y753100D02*X405100Y753600D01*
+X406100D01*
+X406600Y753100D01*
+Y750100D01*
+X406100Y749600D02*X406600Y750100D01*
+X405100Y749600D02*X406100D01*
+X404600Y750600D02*X406600Y752600D01*
+X407800Y752800D02*X408600Y753600D01*
+Y749600D01*
+X407800D02*X409300D01*
+X379900Y612300D02*X383900D01*
+X379900Y613600D02*X380600Y614300D01*
+X383200D01*
+X383900Y613600D02*X383200Y614300D01*
+X383900Y613600D02*Y611800D01*
+X379900Y613600D02*Y611800D01*
+X380700Y615500D02*X379900Y616300D01*
+X383900D01*
+Y617000D02*Y615500D01*
+X383400Y618200D02*X383900Y618700D01*
+X380400Y618200D02*X383400D01*
+X380400D02*X379900Y618700D01*
+Y619700D02*Y618700D01*
+Y619700D02*X380400Y620200D01*
+X383400D01*
+X383900Y619700D02*X383400Y620200D01*
+X383900Y619700D02*Y618700D01*
+X382900Y618200D02*X380900Y620200D01*
+X380700Y621400D02*X379900Y622200D01*
+X383900D01*
+Y622900D02*Y621400D01*
+X388268Y682144D02*Y678644D01*
+X388768Y678144D01*
+X389768D01*
+X390268Y678644D01*
+Y682144D02*Y678644D01*
+X391468Y679644D02*X393468Y682144D01*
+X391468Y679644D02*X393968D01*
+X393468Y682144D02*Y678144D01*
+X395168Y678644D02*X395668Y678144D01*
+X395168Y681644D02*Y678644D01*
+Y681644D02*X395668Y682144D01*
+X396668D01*
+X397168Y681644D01*
+Y678644D01*
+X396668Y678144D02*X397168Y678644D01*
+X395668Y678144D02*X396668D01*
+X395168Y679144D02*X397168Y681144D01*
+X398368Y681644D02*X398868Y682144D01*
+X399868D01*
+X400368Y681644D01*
+X399868Y678144D02*X400368Y678644D01*
+X398868Y678144D02*X399868D01*
+X398368Y678644D02*X398868Y678144D01*
+Y680344D02*X399868D01*
+X400368Y681644D02*Y680844D01*
+Y679844D02*Y678644D01*
+Y679844D02*X399868Y680344D01*
+X400368Y680844D02*X399868Y680344D01*
+X363316Y716703D02*Y713203D01*
+X363816Y712703D01*
+X364816D01*
+X365316Y713203D01*
+Y716703D02*Y713203D01*
+X366516Y714203D02*X368516Y716703D01*
+X366516Y714203D02*X369016D01*
+X368516Y716703D02*Y712703D01*
+X370216Y713203D02*X370716Y712703D01*
+X370216Y716203D02*Y713203D01*
+Y716203D02*X370716Y716703D01*
+X371716D01*
+X372216Y716203D01*
+Y713203D01*
+X371716Y712703D02*X372216Y713203D01*
+X370716Y712703D02*X371716D01*
+X370216Y713703D02*X372216Y715703D01*
+X373416Y716203D02*X373916Y716703D01*
+X375416D01*
+X375916Y716203D01*
+Y715203D01*
+X373416Y712703D02*X375916Y715203D01*
+X373416Y712703D02*X375916D01*
+X380583Y629240D02*X382583D01*
+X381583D02*Y625240D01*
+X384283Y629240D02*Y625240D01*
+X383783Y629240D02*X385783D01*
+X386283Y628740D01*
+Y627740D01*
+X385783Y627240D02*X386283Y627740D01*
+X384283Y627240D02*X385783D01*
+X387483Y628440D02*X388283Y629240D01*
+Y625240D01*
+X387483D02*X388983D01*
+X390183Y625740D02*X390683Y625240D01*
+X390183Y628740D02*Y625740D01*
+Y628740D02*X390683Y629240D01*
+X391683D01*
+X392183Y628740D01*
+Y625740D01*
+X391683Y625240D02*X392183Y625740D01*
+X390683Y625240D02*X391683D01*
+X390183Y626240D02*X392183Y628240D01*
+X393383Y625740D02*X393883Y625240D01*
+X393383Y628740D02*Y625740D01*
+Y628740D02*X393883Y629240D01*
+X394883D01*
+X395383Y628740D01*
+Y625740D01*
+X394883Y625240D02*X395383Y625740D01*
+X393883Y625240D02*X394883D01*
+X393383Y626240D02*X395383Y628240D01*
+X388436Y657366D02*X389736D01*
+X387736Y658066D02*X388436Y657366D01*
+X387736Y660666D02*Y658066D01*
+Y660666D02*X388436Y661366D01*
+X389736D01*
+X390936Y660566D02*X391736Y661366D01*
+Y657366D01*
+X390936D02*X392436D01*
+X393636Y657866D02*X394136Y657366D01*
+X393636Y660866D02*Y657866D01*
+Y660866D02*X394136Y661366D01*
+X395136D01*
+X395636Y660866D01*
+Y657866D01*
+X395136Y657366D02*X395636Y657866D01*
+X394136Y657366D02*X395136D01*
+X393636Y658366D02*X395636Y660366D01*
+X396836Y657866D02*X397336Y657366D01*
+X396836Y660866D02*Y657866D01*
+Y660866D02*X397336Y661366D01*
+X398336D01*
+X398836Y660866D01*
+Y657866D01*
+X398336Y657366D02*X398836Y657866D01*
+X397336Y657366D02*X398336D01*
+X396836Y658366D02*X398836Y660366D01*
+X374850Y599650D02*X376850D01*
+X377350Y599150D01*
+Y598150D01*
+X376850Y597650D02*X377350Y598150D01*
+X375350Y597650D02*X376850D01*
+X375350Y599650D02*Y595650D01*
+X376150Y597650D02*X377350Y595650D01*
+X378550Y598850D02*X379350Y599650D01*
+Y595650D01*
+X378550D02*X380050D01*
+X381250Y596150D02*X381750Y595650D01*
+X381250Y599150D02*Y596150D01*
+Y599150D02*X381750Y599650D01*
+X382750D01*
+X383250Y599150D01*
+Y596150D01*
+X382750Y595650D02*X383250Y596150D01*
+X381750Y595650D02*X382750D01*
+X381250Y596650D02*X383250Y598650D01*
+X384450Y596150D02*X384950Y595650D01*
+X384450Y599150D02*Y596150D01*
+Y599150D02*X384950Y599650D01*
+X385950D01*
+X386450Y599150D01*
+Y596150D01*
+X385950Y595650D02*X386450Y596150D01*
+X384950Y595650D02*X385950D01*
+X384450Y596650D02*X386450Y598650D01*
+X302550Y608650D02*X303850D01*
+X301850Y609350D02*X302550Y608650D01*
+X301850Y611950D02*Y609350D01*
+Y611950D02*X302550Y612650D01*
+X303850D01*
+X305050Y611850D02*X305850Y612650D01*
+Y608650D01*
+X305050D02*X306550D01*
+X307750Y609150D02*X308250Y608650D01*
+X307750Y612150D02*Y609150D01*
+Y612150D02*X308250Y612650D01*
+X309250D01*
+X309750Y612150D01*
+Y609150D01*
+X309250Y608650D02*X309750Y609150D01*
+X308250Y608650D02*X309250D01*
+X307750Y609650D02*X309750Y611650D01*
+X310950Y611850D02*X311750Y612650D01*
+Y608650D01*
+X310950D02*X312450D01*
+X338823Y610112D02*X342323D01*
+X342823Y610612D01*
+Y611612D02*Y610612D01*
+Y611612D02*X342323Y612112D01*
+X338823D02*X342323D01*
+X339623Y613312D02*X338823Y614112D01*
+X342823D01*
+Y614812D02*Y613312D01*
+X342323Y616012D02*X342823Y616512D01*
+X339323Y616012D02*X342323D01*
+X339323D02*X338823Y616512D01*
+Y617512D02*Y616512D01*
+Y617512D02*X339323Y618012D01*
+X342323D01*
+X342823Y617512D02*X342323Y618012D01*
+X342823Y617512D02*Y616512D01*
+X341823Y616012D02*X339823Y618012D01*
+X342323Y619212D02*X342823Y619712D01*
+X339323Y619212D02*X342323D01*
+X339323D02*X338823Y619712D01*
+Y620712D02*Y619712D01*
+Y620712D02*X339323Y621212D01*
+X342323D01*
+X342823Y620712D02*X342323Y621212D01*
+X342823Y620712D02*Y619712D01*
+X341823Y619212D02*X339823Y621212D01*
+X348850Y564150D02*X350850D01*
+X351350Y563650D01*
+Y562650D01*
+X350850Y562150D02*X351350Y562650D01*
+X349350Y562150D02*X350850D01*
+X349350Y564150D02*Y560150D01*
+X350150Y562150D02*X351350Y560150D01*
+X352550Y563350D02*X353350Y564150D01*
+Y560150D01*
+X352550D02*X354050D01*
+X355250Y560650D02*X355750Y560150D01*
+X355250Y563650D02*Y560650D01*
+Y563650D02*X355750Y564150D01*
+X356750D01*
+X357250Y563650D01*
+Y560650D01*
+X356750Y560150D02*X357250Y560650D01*
+X355750Y560150D02*X356750D01*
+X355250Y561150D02*X357250Y563150D01*
+X358450Y563650D02*X358950Y564150D01*
+X360450D01*
+X360950Y563650D01*
+Y562650D01*
+X358450Y560150D02*X360950Y562650D01*
+X358450Y560150D02*X360950D01*
+X350050Y566650D02*X351350D01*
+X349350Y567350D02*X350050Y566650D01*
+X349350Y569950D02*Y567350D01*
+Y569950D02*X350050Y570650D01*
+X351350D01*
+X352550Y569850D02*X353350Y570650D01*
+Y566650D01*
+X352550D02*X354050D01*
+X355250Y567150D02*X355750Y566650D01*
+X355250Y570150D02*Y567150D01*
+Y570150D02*X355750Y570650D01*
+X356750D01*
+X357250Y570150D01*
+Y567150D01*
+X356750Y566650D02*X357250Y567150D01*
+X355750Y566650D02*X356750D01*
+X355250Y567650D02*X357250Y569650D01*
+X358450Y570150D02*X358950Y570650D01*
+X360450D01*
+X360950Y570150D01*
+Y569150D01*
+X358450Y566650D02*X360950Y569150D01*
+X358450Y566650D02*X360950D01*
+X456142Y662304D02*X456942D01*
+Y658804D01*
+X456442Y658304D02*X456942Y658804D01*
+X455942Y658304D02*X456442D01*
+X455442Y658804D02*X455942Y658304D01*
+X455442Y659304D02*Y658804D01*
+X458142Y659804D02*X460142Y662304D01*
+X458142Y659804D02*X460642D01*
+X460142Y662304D02*Y658304D01*
+X461842Y658804D02*X462342Y658304D01*
+X461842Y661804D02*Y658804D01*
+Y661804D02*X462342Y662304D01*
+X463342D01*
+X463842Y661804D01*
+Y658804D01*
+X463342Y658304D02*X463842Y658804D01*
+X462342Y658304D02*X463342D01*
+X461842Y659304D02*X463842Y661304D01*
+X465042Y661504D02*X465842Y662304D01*
+Y658304D01*
+X465042D02*X466542D01*
+X436158Y649664D02*X436958D01*
+Y646164D01*
+X436458Y645664D02*X436958Y646164D01*
+X435958Y645664D02*X436458D01*
+X435458Y646164D02*X435958Y645664D01*
+X435458Y646664D02*Y646164D01*
+X438158Y648864D02*X438958Y649664D01*
+Y645664D01*
+X438158D02*X439658D01*
+X423247Y593777D02*Y589777D01*
+X424547Y593777D02*X425247Y593077D01*
+Y590477D01*
+X424547Y589777D02*X425247Y590477D01*
+X422747Y589777D02*X424547D01*
+X422747Y593777D02*X424547D01*
+X426447Y592977D02*X427247Y593777D01*
+Y589777D01*
+X426447D02*X427947D01*
+X429147Y590277D02*X429647Y589777D01*
+X429147Y593277D02*Y590277D01*
+Y593277D02*X429647Y593777D01*
+X430647D01*
+X431147Y593277D01*
+Y590277D01*
+X430647Y589777D02*X431147Y590277D01*
+X429647Y589777D02*X430647D01*
+X429147Y590777D02*X431147Y592777D01*
+X432347Y593277D02*X432847Y593777D01*
+X434347D01*
+X434847Y593277D01*
+Y592277D01*
+X432347Y589777D02*X434847Y592277D01*
+X432347Y589777D02*X434847D01*
+X401786Y597516D02*X403086D01*
+X401086Y598216D02*X401786Y597516D01*
+X401086Y600816D02*Y598216D01*
+Y600816D02*X401786Y601516D01*
+X403086D01*
+X404286Y600716D02*X405086Y601516D01*
+Y597516D01*
+X404286D02*X405786D01*
+X406986Y600716D02*X407786Y601516D01*
+Y597516D01*
+X406986D02*X408486D01*
+X409686Y598016D02*X410186Y597516D01*
+X409686Y601016D02*Y598016D01*
+Y601016D02*X410186Y601516D01*
+X411186D01*
+X411686Y601016D01*
+Y598016D01*
+X411186Y597516D02*X411686Y598016D01*
+X410186Y597516D02*X411186D01*
+X409686Y598516D02*X411686Y600516D01*
+X153961Y742783D02*X155961D01*
+X154961D02*Y738783D01*
+X157661Y742783D02*Y738783D01*
+X157161Y742783D02*X159161D01*
+X159661Y742283D01*
+Y741283D01*
+X159161Y740783D02*X159661Y741283D01*
+X157661Y740783D02*X159161D01*
+X160861Y742283D02*X161361Y742783D01*
+X162861D01*
+X163361Y742283D01*
+Y741283D01*
+X160861Y738783D02*X163361Y741283D01*
+X160861Y738783D02*X163361D01*
+X164561Y739283D02*X165061Y738783D01*
+X164561Y742283D02*Y739283D01*
+Y742283D02*X165061Y742783D01*
+X166061D01*
+X166561Y742283D01*
+Y739283D01*
+X166061Y738783D02*X166561Y739283D01*
+X165061Y738783D02*X166061D01*
+X164561Y739783D02*X166561Y741783D01*
+X167761Y742283D02*X168261Y742783D01*
+X169761D01*
+X170261Y742283D01*
+Y741283D01*
+X167761Y738783D02*X170261Y741283D01*
+X167761Y738783D02*X170261D01*
+X149076Y691254D02*X150376D01*
+X148376Y691954D02*X149076Y691254D01*
+X148376Y694554D02*Y691954D01*
+Y694554D02*X149076Y695254D01*
+X150376D01*
+X151576Y694754D02*X152076Y695254D01*
+X153576D01*
+X154076Y694754D01*
+Y693754D01*
+X151576Y691254D02*X154076Y693754D01*
+X151576Y691254D02*X154076D01*
+X155276Y691754D02*X155776Y691254D01*
+X155276Y694754D02*Y691754D01*
+Y694754D02*X155776Y695254D01*
+X156776D01*
+X157276Y694754D01*
+Y691754D01*
+X156776Y691254D02*X157276Y691754D01*
+X155776Y691254D02*X156776D01*
+X155276Y692254D02*X157276Y694254D01*
+X158476Y692754D02*X160476Y695254D01*
+X158476Y692754D02*X160976D01*
+X160476Y695254D02*Y691254D01*
+X229200Y699175D02*Y695675D01*
+X229700Y695175D01*
+X230700D01*
+X231200Y695675D01*
+Y699175D02*Y695675D01*
+X232400Y698675D02*X232900Y699175D01*
+X234400D01*
+X234900Y698675D01*
+Y697675D01*
+X232400Y695175D02*X234900Y697675D01*
+X232400Y695175D02*X234900D01*
+X236100Y695675D02*X236600Y695175D01*
+X236100Y698675D02*Y695675D01*
+Y698675D02*X236600Y699175D01*
+X237600D01*
+X238100Y698675D01*
+Y695675D01*
+X237600Y695175D02*X238100Y695675D01*
+X236600Y695175D02*X237600D01*
+X236100Y696175D02*X238100Y698175D01*
+X239300Y695675D02*X239800Y695175D01*
+X239300Y698675D02*Y695675D01*
+Y698675D02*X239800Y699175D01*
+X240800D01*
+X241300Y698675D01*
+Y695675D01*
+X240800Y695175D02*X241300Y695675D01*
+X239800Y695175D02*X240800D01*
+X239300Y696175D02*X241300Y698175D01*
+X192050Y698150D02*X193350D01*
+X191350Y698850D02*X192050Y698150D01*
+X191350Y701450D02*Y698850D01*
+Y701450D02*X192050Y702150D01*
+X193350D01*
+X194550Y701650D02*X195050Y702150D01*
+X196550D01*
+X197050Y701650D01*
+Y700650D01*
+X194550Y698150D02*X197050Y700650D01*
+X194550Y698150D02*X197050D01*
+X198250Y698650D02*X198750Y698150D01*
+X198250Y701650D02*Y698650D01*
+Y701650D02*X198750Y702150D01*
+X199750D01*
+X200250Y701650D01*
+Y698650D01*
+X199750Y698150D02*X200250Y698650D01*
+X198750Y698150D02*X199750D01*
+X198250Y699150D02*X200250Y701150D01*
+X201450Y701650D02*X201950Y702150D01*
+X202950D01*
+X203450Y701650D01*
+X202950Y698150D02*X203450Y698650D01*
+X201950Y698150D02*X202950D01*
+X201450Y698650D02*X201950Y698150D01*
+Y700350D02*X202950D01*
+X203450Y701650D02*Y700850D01*
+Y699850D02*Y698650D01*
+Y699850D02*X202950Y700350D01*
+X203450Y700850D02*X202950Y700350D01*
+X228893Y715307D02*X232893D01*
+X228893Y716607D02*X229593Y717307D01*
+X232193D01*
+X232893Y716607D02*X232193Y717307D01*
+X232893Y716607D02*Y714807D01*
+X228893Y716607D02*Y714807D01*
+X229393Y718507D02*X228893Y719007D01*
+Y720507D02*Y719007D01*
+Y720507D02*X229393Y721007D01*
+X230393D01*
+X232893Y718507D02*X230393Y721007D01*
+X232893D02*Y718507D01*
+X232393Y722207D02*X232893Y722707D01*
+X229393Y722207D02*X232393D01*
+X229393D02*X228893Y722707D01*
+Y723707D02*Y722707D01*
+Y723707D02*X229393Y724207D01*
+X232393D01*
+X232893Y723707D02*X232393Y724207D01*
+X232893Y723707D02*Y722707D01*
+X231893Y722207D02*X229893Y724207D01*
+X229393Y725407D02*X228893Y725907D01*
+Y727407D02*Y725907D01*
+Y727407D02*X229393Y727907D01*
+X230393D01*
+X232893Y725407D02*X230393Y727907D01*
+X232893D02*Y725407D01*
+X197307Y712650D02*X199307D01*
+X199807Y712150D01*
+Y711150D01*
+X199307Y710650D02*X199807Y711150D01*
+X197807Y710650D02*X199307D01*
+X197807Y712650D02*Y708650D01*
+X198607Y710650D02*X199807Y708650D01*
+X201007Y712150D02*X201507Y712650D01*
+X203007D01*
+X203507Y712150D01*
+Y711150D01*
+X201007Y708650D02*X203507Y711150D01*
+X201007Y708650D02*X203507D01*
+X204707Y709150D02*X205207Y708650D01*
+X204707Y712150D02*Y709150D01*
+Y712150D02*X205207Y712650D01*
+X206207D01*
+X206707Y712150D01*
+Y709150D01*
+X206207Y708650D02*X206707Y709150D01*
+X205207Y708650D02*X206207D01*
+X204707Y709650D02*X206707Y711650D01*
+X207907Y711850D02*X208707Y712650D01*
+Y708650D01*
+X207907D02*X209407D01*
+X187000Y726000D02*X189000D01*
+X188000D02*Y722000D01*
+X190700Y726000D02*Y722000D01*
+X190200Y726000D02*X192200D01*
+X192700Y725500D01*
+Y724500D01*
+X192200Y724000D02*X192700Y724500D01*
+X190700Y724000D02*X192200D01*
+X193900Y725500D02*X194400Y726000D01*
+X195900D01*
+X196400Y725500D01*
+Y724500D01*
+X193900Y722000D02*X196400Y724500D01*
+X193900Y722000D02*X196400D01*
+X197600Y722500D02*X198100Y722000D01*
+X197600Y725500D02*Y722500D01*
+Y725500D02*X198100Y726000D01*
+X199100D01*
+X199600Y725500D01*
+Y722500D01*
+X199100Y722000D02*X199600Y722500D01*
+X198100Y722000D02*X199100D01*
+X197600Y723000D02*X199600Y725000D01*
+X200800Y725200D02*X201600Y726000D01*
+Y722000D01*
+X200800D02*X202300D01*
+X208499Y581965D02*X209799D01*
+X207799Y582665D02*X208499Y581965D01*
+X207799Y585265D02*Y582665D01*
+Y585265D02*X208499Y585965D01*
+X209799D01*
+X210999Y585465D02*X211499Y585965D01*
+X212999D01*
+X213499Y585465D01*
+Y584465D01*
+X210999Y581965D02*X213499Y584465D01*
+X210999Y581965D02*X213499D01*
+X214699Y582465D02*X215199Y581965D01*
+X214699Y585465D02*Y582465D01*
+Y585465D02*X215199Y585965D01*
+X216199D01*
+X216699Y585465D01*
+Y582465D01*
+X216199Y581965D02*X216699Y582465D01*
+X215199Y581965D02*X216199D01*
+X214699Y582965D02*X216699Y584965D01*
+X217899Y582465D02*X218399Y581965D01*
+X217899Y585465D02*Y582465D01*
+Y585465D02*X218399Y585965D01*
+X219399D01*
+X219899Y585465D01*
+Y582465D01*
+X219399Y581965D02*X219899Y582465D01*
+X218399Y581965D02*X219399D01*
+X217899Y582965D02*X219899Y584965D01*
+X170500Y623000D02*Y619000D01*
+X172500D01*
+X173700Y622500D02*X174200Y623000D01*
+X175700D01*
+X176200Y622500D01*
+Y621500D01*
+X173700Y619000D02*X176200Y621500D01*
+X173700Y619000D02*X176200D01*
+X177400Y619500D02*X177900Y619000D01*
+X177400Y622500D02*Y619500D01*
+Y622500D02*X177900Y623000D01*
+X178900D01*
+X179400Y622500D01*
+Y619500D01*
+X178900Y619000D02*X179400Y619500D01*
+X177900Y619000D02*X178900D01*
+X177400Y620000D02*X179400Y622000D01*
+X180600Y619500D02*X181100Y619000D01*
+X180600Y622500D02*Y619500D01*
+Y622500D02*X181100Y623000D01*
+X182100D01*
+X182600Y622500D01*
+Y619500D01*
+X182100Y619000D02*X182600Y619500D01*
+X181100Y619000D02*X182100D01*
+X180600Y620000D02*X182600Y622000D01*
+X173000Y607500D02*X175000D01*
+X174000D02*Y603500D01*
+X176700Y607500D02*Y603500D01*
+X176200Y607500D02*X178200D01*
+X178700Y607000D01*
+Y606000D01*
+X178200Y605500D02*X178700Y606000D01*
+X176700Y605500D02*X178200D01*
+X179900Y606700D02*X180700Y607500D01*
+Y603500D01*
+X179900D02*X181400D01*
+X182600Y604000D02*X183100Y603500D01*
+X182600Y607000D02*Y604000D01*
+Y607000D02*X183100Y607500D01*
+X184100D01*
+X184600Y607000D01*
+Y604000D01*
+X184100Y603500D02*X184600Y604000D01*
+X183100Y603500D02*X184100D01*
+X182600Y604500D02*X184600Y606500D01*
+X185800Y606700D02*X186600Y607500D01*
+Y603500D01*
+X185800D02*X187300D01*
+X234393Y610650D02*X236393D01*
+X236893Y610150D01*
+Y609150D01*
+X236393Y608650D02*X236893Y609150D01*
+X234893Y608650D02*X236393D01*
+X234893Y610650D02*Y606650D01*
+X235693Y608650D02*X236893Y606650D01*
+X238093Y610150D02*X238593Y610650D01*
+X240093D01*
+X240593Y610150D01*
+Y609150D01*
+X238093Y606650D02*X240593Y609150D01*
+X238093Y606650D02*X240593D01*
+X241793Y607150D02*X242293Y606650D01*
+X241793Y610150D02*Y607150D01*
+Y610150D02*X242293Y610650D01*
+X243293D01*
+X243793Y610150D01*
+Y607150D01*
+X243293Y606650D02*X243793Y607150D01*
+X242293Y606650D02*X243293D01*
+X241793Y607650D02*X243793Y609650D01*
+X244993Y607150D02*X245493Y606650D01*
+X244993Y610150D02*Y607150D01*
+Y610150D02*X245493Y610650D01*
+X246493D01*
+X246993Y610150D01*
+Y607150D01*
+X246493Y606650D02*X246993Y607150D01*
+X245493Y606650D02*X246493D01*
+X244993Y607650D02*X246993Y609650D01*
+X151500Y607500D02*X153500D01*
+X152500D02*Y603500D01*
+X155200Y607500D02*Y603500D01*
+X154700Y607500D02*X156700D01*
+X157200Y607000D01*
+Y606000D01*
+X156700Y605500D02*X157200Y606000D01*
+X155200Y605500D02*X156700D01*
+X158400Y606700D02*X159200Y607500D01*
+Y603500D01*
+X158400D02*X159900D01*
+X161100Y604000D02*X161600Y603500D01*
+X161100Y607000D02*Y604000D01*
+Y607000D02*X161600Y607500D01*
+X162600D01*
+X163100Y607000D01*
+Y604000D01*
+X162600Y603500D02*X163100Y604000D01*
+X161600Y603500D02*X162600D01*
+X161100Y604500D02*X163100Y606500D01*
+X164300Y607000D02*X164800Y607500D01*
+X166300D01*
+X166800Y607000D01*
+Y606000D01*
+X164300Y603500D02*X166800Y606000D01*
+X164300Y603500D02*X166800D01*
+X282543Y633549D02*X285543D01*
+X282543D02*X282043Y634049D01*
+Y635049D02*Y634049D01*
+Y635049D02*X282543Y635549D01*
+X285043D01*
+X286043Y634549D02*X285043Y635549D01*
+X286043Y634549D02*Y634049D01*
+X285543Y633549D02*X286043Y634049D01*
+X284543Y634549D02*X286043Y635549D01*
+X282843Y636749D02*X282043Y637549D01*
+X286043D01*
+Y638249D02*Y636749D01*
+X285543Y639449D02*X286043Y639949D01*
+X282543Y639449D02*X285543D01*
+X282543D02*X282043Y639949D01*
+Y640949D02*Y639949D01*
+Y640949D02*X282543Y641449D01*
+X285543D01*
+X286043Y640949D02*X285543Y641449D01*
+X286043Y640949D02*Y639949D01*
+X285043Y639449D02*X283043Y641449D01*
+X285543Y642649D02*X286043Y643149D01*
+X282543Y642649D02*X285543D01*
+X282543D02*X282043Y643149D01*
+Y644149D02*Y643149D01*
+Y644149D02*X282543Y644649D01*
+X285543D01*
+X286043Y644149D02*X285543Y644649D01*
+X286043Y644149D02*Y643149D01*
+X285043Y642649D02*X283043Y644649D01*
+X261543Y575161D02*X262843D01*
+X260843Y575861D02*X261543Y575161D01*
+X260843Y578461D02*Y575861D01*
+Y578461D02*X261543Y579161D01*
+X262843D01*
+X264043Y578361D02*X264843Y579161D01*
+Y575161D01*
+X264043D02*X265543D01*
+X266743Y575661D02*X267243Y575161D01*
+X266743Y578661D02*Y575661D01*
+Y578661D02*X267243Y579161D01*
+X268243D01*
+X268743Y578661D01*
+Y575661D01*
+X268243Y575161D02*X268743Y575661D01*
+X267243Y575161D02*X268243D01*
+X266743Y576161D02*X268743Y578161D01*
+X269943Y575661D02*X270443Y575161D01*
+X269943Y576461D02*Y575661D01*
+Y576461D02*X270643Y577161D01*
+X271243D01*
+X271943Y576461D01*
+Y575661D01*
+X271443Y575161D02*X271943Y575661D01*
+X270443Y575161D02*X271443D01*
+X269943Y577861D02*X270643Y577161D01*
+X269943Y578661D02*Y577861D01*
+Y578661D02*X270443Y579161D01*
+X271443D01*
+X271943Y578661D01*
+Y577861D01*
+X271243Y577161D02*X271943Y577861D01*
+X268850Y630764D02*Y629464D01*
+X268150Y628764D02*X268850Y629464D01*
+X265550Y628764D02*X268150D01*
+X265550D02*X264850Y629464D01*
+Y630764D02*Y629464D01*
+X265650Y631964D02*X264850Y632764D01*
+X268850D01*
+Y633464D02*Y631964D01*
+X268350Y634664D02*X268850Y635164D01*
+X265350Y634664D02*X268350D01*
+X265350D02*X264850Y635164D01*
+Y636164D02*Y635164D01*
+Y636164D02*X265350Y636664D01*
+X268350D01*
+X268850Y636164D02*X268350Y636664D01*
+X268850Y636164D02*Y635164D01*
+X267850Y634664D02*X265850Y636664D01*
+X264850Y639364D02*X265350Y639864D01*
+X264850Y639364D02*Y638364D01*
+X265350Y637864D02*X264850Y638364D01*
+X265350Y637864D02*X268350D01*
+X268850Y638364D01*
+X266650Y639364D02*X267150Y639864D01*
+X266650Y639364D02*Y637864D01*
+X268850Y639364D02*Y638364D01*
+Y639364D02*X268350Y639864D01*
+X267150D02*X268350D01*
+X285362Y608114D02*Y606114D01*
+Y608114D02*X285862Y608614D01*
+X286862D01*
+X287362Y608114D02*X286862Y608614D01*
+X287362Y608114D02*Y606614D01*
+X285362D02*X289362D01*
+X287362Y607414D02*X289362Y608614D01*
+X286162Y609814D02*X285362Y610614D01*
+X289362D01*
+Y611314D02*Y609814D01*
+X288862Y612514D02*X289362Y613014D01*
+X285862Y612514D02*X288862D01*
+X285862D02*X285362Y613014D01*
+Y614014D02*Y613014D01*
+Y614014D02*X285862Y614514D01*
+X288862D01*
+X289362Y614014D02*X288862Y614514D01*
+X289362Y614014D02*Y613014D01*
+X288362Y612514D02*X286362Y614514D01*
+X285362Y617214D02*X285862Y617714D01*
+X285362Y617214D02*Y616214D01*
+X285862Y615714D02*X285362Y616214D01*
+X285862Y615714D02*X288862D01*
+X289362Y616214D01*
+X287162Y617214D02*X287662Y617714D01*
+X287162Y617214D02*Y615714D01*
+X289362Y617214D02*Y616214D01*
+Y617214D02*X288862Y617714D01*
+X287662D02*X288862D01*
+X317636Y631150D02*X318936D01*
+X316936Y631850D02*X317636Y631150D01*
+X316936Y634450D02*Y631850D01*
+Y634450D02*X317636Y635150D01*
+X318936D01*
+X320136Y634350D02*X320936Y635150D01*
+Y631150D01*
+X320136D02*X321636D01*
+X322836Y631650D02*X323336Y631150D01*
+X322836Y634650D02*Y631650D01*
+Y634650D02*X323336Y635150D01*
+X324336D01*
+X324836Y634650D01*
+Y631650D01*
+X324336Y631150D02*X324836Y631650D01*
+X323336Y631150D02*X324336D01*
+X322836Y632150D02*X324836Y634150D01*
+X326036Y635150D02*X328036D01*
+X326036D02*Y633150D01*
+X326536Y633650D01*
+X327536D01*
+X328036Y633150D01*
+Y631650D01*
+X327536Y631150D02*X328036Y631650D01*
+X326536Y631150D02*X327536D01*
+X326036Y631650D02*X326536Y631150D01*
+X300839Y689500D02*Y685500D01*
+X302839D01*
+X304039Y688700D02*X304839Y689500D01*
+Y685500D01*
+X304039D02*X305539D01*
+X306739Y686000D02*X307239Y685500D01*
+X306739Y689000D02*Y686000D01*
+Y689000D02*X307239Y689500D01*
+X308239D01*
+X308739Y689000D01*
+Y686000D01*
+X308239Y685500D02*X308739Y686000D01*
+X307239Y685500D02*X308239D01*
+X306739Y686500D02*X308739Y688500D01*
+X309939Y686000D02*X310439Y685500D01*
+X309939Y689000D02*Y686000D01*
+Y689000D02*X310439Y689500D01*
+X311439D01*
+X311939Y689000D01*
+Y686000D01*
+X311439Y685500D02*X311939Y686000D01*
+X310439Y685500D02*X311439D01*
+X309939Y686500D02*X311939Y688500D01*
+X317650Y740215D02*X318833D01*
+X317013Y740852D02*X317650Y740215D01*
+X317013Y743218D02*Y740852D01*
+Y743218D02*X317650Y743855D01*
+X318833D01*
+X319925Y741580D02*X321745Y743855D01*
+X319925Y741580D02*X322200D01*
+X321745Y743855D02*Y740215D01*
+X323292Y740670D02*X323747Y740215D01*
+X323292Y743400D02*Y740670D01*
+Y743400D02*X323747Y743855D01*
+X324657D01*
+X325112Y743400D01*
+Y740670D01*
+X324657Y740215D02*X325112Y740670D01*
+X323747Y740215D02*X324657D01*
+X323292Y741125D02*X325112Y742945D01*
+X326204Y741580D02*X328024Y743855D01*
+X326204Y741580D02*X328479D01*
+X328024Y743855D02*Y740215D01*
+X289815Y713059D02*Y711876D01*
+X289178Y711239D02*X289815Y711876D01*
+X286812Y711239D02*X289178D01*
+X286812D02*X286175Y711876D01*
+Y713059D02*Y711876D01*
+X288450Y714151D02*X286175Y715971D01*
+X288450Y716426D02*Y714151D01*
+X286175Y715971D02*X289815D01*
+X289360Y717518D02*X289815Y717973D01*
+X286630Y717518D02*X289360D01*
+X286630D02*X286175Y717973D01*
+Y718883D02*Y717973D01*
+Y718883D02*X286630Y719338D01*
+X289360D01*
+X289815Y718883D02*X289360Y719338D01*
+X289815Y718883D02*Y717973D01*
+X288905Y717518D02*X287085Y719338D01*
+X286175Y722250D02*Y720430D01*
+X287995D01*
+X287540Y720885D01*
+Y721795D02*Y720885D01*
+Y721795D02*X287995Y722250D01*
+X289360D01*
+X289815Y721795D02*X289360Y722250D01*
+X289815Y721795D02*Y720885D01*
+X289360Y720430D02*X289815Y720885D01*
+X281322Y682412D02*X285322D01*
+X281322Y683712D02*X282022Y684412D01*
+X284622D01*
+X285322Y683712D02*X284622Y684412D01*
+X285322Y683712D02*Y681912D01*
+X281322Y683712D02*Y681912D01*
+X282122Y685612D02*X281322Y686412D01*
+X285322D01*
+Y687112D02*Y685612D01*
+X284822Y688312D02*X285322Y688812D01*
+X281822Y688312D02*X284822D01*
+X281822D02*X281322Y688812D01*
+Y689812D02*Y688812D01*
+Y689812D02*X281822Y690312D01*
+X284822D01*
+X285322Y689812D02*X284822Y690312D01*
+X285322Y689812D02*Y688812D01*
+X284322Y688312D02*X282322Y690312D01*
+X283822Y691512D02*X281322Y693512D01*
+X283822Y694012D02*Y691512D01*
+X281322Y693512D02*X285322D01*
+X331393Y633307D02*Y631307D01*
+Y633307D02*X331893Y633807D01*
+X332893D01*
+X333393Y633307D02*X332893Y633807D01*
+X333393Y633307D02*Y631807D01*
+X331393D02*X335393D01*
+X333393Y632607D02*X335393Y633807D01*
+X332193Y635007D02*X331393Y635807D01*
+X335393D01*
+Y636507D02*Y635007D01*
+X334893Y637707D02*X335393Y638207D01*
+X331893Y637707D02*X334893D01*
+X331893D02*X331393Y638207D01*
+Y639207D02*Y638207D01*
+Y639207D02*X331893Y639707D01*
+X334893D01*
+X335393Y639207D02*X334893Y639707D01*
+X335393Y639207D02*Y638207D01*
+X334393Y637707D02*X332393Y639707D01*
+X331393Y642907D02*Y640907D01*
+X333393D01*
+X332893Y641407D01*
+Y642407D02*Y641407D01*
+Y642407D02*X333393Y642907D01*
+X334893D01*
+X335393Y642407D02*X334893Y642907D01*
+X335393Y642407D02*Y641407D01*
+X334893Y640907D02*X335393Y641407D01*
+X350050Y579650D02*X351350D01*
+X349350Y580350D02*X350050Y579650D01*
+X349350Y582950D02*Y580350D01*
+Y582950D02*X350050Y583650D01*
+X351350D01*
+X352550Y582850D02*X353350Y583650D01*
+Y579650D01*
+X352550D02*X354050D01*
+X355250Y580150D02*X355750Y579650D01*
+X355250Y583150D02*Y580150D01*
+Y583150D02*X355750Y583650D01*
+X356750D01*
+X357250Y583150D01*
+Y580150D01*
+X356750Y579650D02*X357250Y580150D01*
+X355750Y579650D02*X356750D01*
+X355250Y580650D02*X357250Y582650D01*
+X358450Y581150D02*X360450Y583650D01*
+X358450Y581150D02*X360950D01*
+X360450Y583650D02*Y579650D01*
+X350050Y573150D02*X351350D01*
+X349350Y573850D02*X350050Y573150D01*
+X349350Y576450D02*Y573850D01*
+Y576450D02*X350050Y577150D01*
+X351350D01*
+X352550Y576350D02*X353350Y577150D01*
+Y573150D01*
+X352550D02*X354050D01*
+X355250Y573650D02*X355750Y573150D01*
+X355250Y576650D02*Y573650D01*
+Y576650D02*X355750Y577150D01*
+X356750D01*
+X357250Y576650D01*
+Y573650D01*
+X356750Y573150D02*X357250Y573650D01*
+X355750Y573150D02*X356750D01*
+X355250Y574150D02*X357250Y576150D01*
+X358450Y576650D02*X358950Y577150D01*
+X359950D01*
+X360450Y576650D01*
+X359950Y573150D02*X360450Y573650D01*
+X358950Y573150D02*X359950D01*
+X358450Y573650D02*X358950Y573150D01*
+Y575350D02*X359950D01*
+X360450Y576650D02*Y575850D01*
+Y574850D02*Y573650D01*
+Y574850D02*X359950Y575350D01*
+X360450Y575850D02*X359950Y575350D01*
+X313850Y588650D02*X315850D01*
+X316350Y588150D01*
+Y587150D01*
+X315850Y586650D02*X316350Y587150D01*
+X314350Y586650D02*X315850D01*
+X314350Y588650D02*Y584650D01*
+X315150Y586650D02*X316350Y584650D01*
+X317550Y587850D02*X318350Y588650D01*
+Y584650D01*
+X317550D02*X319050D01*
+X320250Y585150D02*X320750Y584650D01*
+X320250Y588150D02*Y585150D01*
+Y588150D02*X320750Y588650D01*
+X321750D01*
+X322250Y588150D01*
+Y585150D01*
+X321750Y584650D02*X322250Y585150D01*
+X320750Y584650D02*X321750D01*
+X320250Y585650D02*X322250Y587650D01*
+X323450Y587850D02*X324250Y588650D01*
+Y584650D01*
+X323450D02*X324950D01*
+X315751Y576122D02*X317051D01*
+X315051Y576822D02*X315751Y576122D01*
+X315051Y579422D02*Y576822D01*
+Y579422D02*X315751Y580122D01*
+X317051D01*
+X318251Y579322D02*X319051Y580122D01*
+Y576122D01*
+X318251D02*X319751D01*
+X320951Y576622D02*X321451Y576122D01*
+X320951Y579622D02*Y576622D01*
+Y579622D02*X321451Y580122D01*
+X322451D01*
+X322951Y579622D01*
+Y576622D01*
+X322451Y576122D02*X322951Y576622D01*
+X321451Y576122D02*X322451D01*
+X320951Y577122D02*X322951Y579122D01*
+X324651Y576122D02*X326151Y578122D01*
+Y579622D02*Y578122D01*
+X325651Y580122D02*X326151Y579622D01*
+X324651Y580122D02*X325651D01*
+X324151Y579622D02*X324651Y580122D01*
+X324151Y579622D02*Y578622D01*
+X324651Y578122D01*
+X326151D01*
+X333350Y599050D02*X335350D01*
+X335850Y598550D01*
+Y597550D01*
+X335350Y597050D02*X335850Y597550D01*
+X333850Y597050D02*X335350D01*
+X333850Y599050D02*Y595050D01*
+X334650Y597050D02*X335850Y595050D01*
+X337050Y598250D02*X337850Y599050D01*
+Y595050D01*
+X337050D02*X338550D01*
+X339750Y595550D02*X340250Y595050D01*
+X339750Y598550D02*Y595550D01*
+Y598550D02*X340250Y599050D01*
+X341250D01*
+X341750Y598550D01*
+Y595550D01*
+X341250Y595050D02*X341750Y595550D01*
+X340250Y595050D02*X341250D01*
+X339750Y596050D02*X341750Y598050D01*
+X342950Y596550D02*X344950Y599050D01*
+X342950Y596550D02*X345450D01*
+X344950Y599050D02*Y595050D01*
+X349200Y590150D02*X351200D01*
+X351700Y589650D01*
+Y588650D01*
+X351200Y588150D02*X351700Y588650D01*
+X349700Y588150D02*X351200D01*
+X349700Y590150D02*Y586150D01*
+X350500Y588150D02*X351700Y586150D01*
+X352900Y589350D02*X353700Y590150D01*
+Y586150D01*
+X352900D02*X354400D01*
+X355600Y586650D02*X356100Y586150D01*
+X355600Y589650D02*Y586650D01*
+Y589650D02*X356100Y590150D01*
+X357100D01*
+X357600Y589650D01*
+Y586650D01*
+X357100Y586150D02*X357600Y586650D01*
+X356100Y586150D02*X357100D01*
+X355600Y587150D02*X357600Y589150D01*
+X358800Y589650D02*X359300Y590150D01*
+X360300D01*
+X360800Y589650D01*
+X360300Y586150D02*X360800Y586650D01*
+X359300Y586150D02*X360300D01*
+X358800Y586650D02*X359300Y586150D01*
+Y588350D02*X360300D01*
+X360800Y589650D02*Y588850D01*
+Y587850D02*Y586650D01*
+Y587850D02*X360300Y588350D01*
+X360800Y588850D02*X360300Y588350D01*
+X268478Y669855D02*Y667855D01*
+Y669855D02*X268978Y670355D01*
+X269978D01*
+X270478Y669855D02*X269978Y670355D01*
+X270478Y669855D02*Y668355D01*
+X268478D02*X272478D01*
+X270478Y669155D02*X272478Y670355D01*
+X269278Y671555D02*X268478Y672355D01*
+X272478D01*
+Y673055D02*Y671555D01*
+X271978Y674255D02*X272478Y674755D01*
+X268978Y674255D02*X271978D01*
+X268978D02*X268478Y674755D01*
+Y675755D02*Y674755D01*
+Y675755D02*X268978Y676255D01*
+X271978D01*
+X272478Y675755D02*X271978Y676255D01*
+X272478Y675755D02*Y674755D01*
+X271478Y674255D02*X269478Y676255D01*
+X272478Y677955D02*X268478Y679955D01*
+Y677455D01*
+X264400Y748800D02*X265200D01*
+Y745300D01*
+X264700Y744800D02*X265200Y745300D01*
+X264200Y744800D02*X264700D01*
+X263700Y745300D02*X264200Y744800D01*
+X263700Y745800D02*Y745300D01*
+X266400Y748300D02*X266900Y748800D01*
+X268400D01*
+X268900Y748300D01*
+Y747300D01*
+X266400Y744800D02*X268900Y747300D01*
+X266400Y744800D02*X268900D01*
+X270100Y745300D02*X270600Y744800D01*
+X270100Y748300D02*Y745300D01*
+Y748300D02*X270600Y748800D01*
+X271600D01*
+X272100Y748300D01*
+Y745300D01*
+X271600Y744800D02*X272100Y745300D01*
+X270600Y744800D02*X271600D01*
+X270100Y745800D02*X272100Y747800D01*
+X273300Y745300D02*X273800Y744800D01*
+X273300Y748300D02*Y745300D01*
+Y748300D02*X273800Y748800D01*
+X274800D01*
+X275300Y748300D01*
+Y745300D01*
+X274800Y744800D02*X275300Y745300D01*
+X273800Y744800D02*X274800D01*
+X273300Y745800D02*X275300Y747800D01*
+M02*
diff --git a/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.unplated-drill.cnc b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.unplated-drill.cnc
new file mode 100644
index 0000000..7667995
--- /dev/null
+++ b/motors/RspBuckBoostv3/shipped_files_rev3/RspPiPSv3.unplated-drill.cnc
@@ -0,0 +1,8 @@
+M48
+INCH
+T86C0.118
+%
+T86
+X045847Y074172
+X045847Y068778
+M30
diff --git a/package.json b/package.json
index 96033c5..f60c6d4 100644
--- a/package.json
+++ b/package.json
@@ -2,13 +2,24 @@
"name": "971-Robot-Code",
"license": "MIT",
"devDependencies": {
+ "@bazel/concatjs": "latest",
+ "@angular/animations": "latest",
+ "@angular/core": "latest",
+ "@angular/common": "latest",
+ "@angular/platform-browser": "latest",
+ "@angular/compiler": "latest",
+ "@angular/compiler-cli": "latest",
+ "@angular/cli": "latest",
"@types/flatbuffers": "latest",
- "@bazel/typescript": "latest",
+ "@bazel/typescript": "4.4.6",
"@bazel/rollup": "latest",
"@bazel/terser": "latest",
"@rollup/plugin-node-resolve": "latest",
"typescript": "latest",
"rollup": "latest",
- "terser": "latest"
+ "terser": "latest",
+ "@babel/cli": "^7.6.0",
+ "@babel/core": "^7.6.0",
+ "zone.js": "^0.11.4"
}
}
diff --git a/scouting/BUILD b/scouting/BUILD
new file mode 100644
index 0000000..8188a20
--- /dev/null
+++ b/scouting/BUILD
@@ -0,0 +1,17 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+
+go_binary(
+ name = "sql_demo",
+ embed = [":scouting_lib"],
+ target_compatible_with = ["@platforms//cpu:x86_64"],
+ visibility = ["//visibility:public"],
+)
+
+go_library(
+ name = "scouting_lib",
+ srcs = ["sql_demo.go"],
+ importpath = "github.com/frc971/971-Robot-Code/scouting",
+ target_compatible_with = ["@platforms//cpu:x86_64"],
+ visibility = ["//visibility:private"],
+ deps = ["@com_github_mattn_go_sqlite3//:go_default_library"],
+)
diff --git a/scouting/sql_demo.go b/scouting/sql_demo.go
new file mode 100644
index 0000000..561571a
--- /dev/null
+++ b/scouting/sql_demo.go
@@ -0,0 +1,36 @@
+package main
+
+import (
+ "database/sql"
+ "fmt"
+ "strconv"
+
+ _ "github.com/mattn/go-sqlite3"
+)
+
+func main() {
+ var alliancecolour string
+ var teamnumber int
+ var id int
+
+ database, _ := sql.Open("sqlite3", "./bogo.db")
+ statement, _ := database.Prepare("DROP TABLE IF EXISTS robots")
+ statement.Exec()
+ statement, _ = database.Prepare("CREATE TABLE robots (id INTEGER PRIMARY KEY, alliancecolour TEXT, teamnumber TEXT)")
+ statement.Exec()
+ for i := 0; i < 6; i++ {
+ if i < 3 {
+ alliancecolour = "red" + strconv.Itoa(i+1)
+ } else if i >= 3 {
+ alliancecolour = "blue" + strconv.Itoa(i-2)
+ }
+ statement, _ = database.Prepare("INSERT INTO robots (alliancecolour, teamnumber) VALUES (?, ?)")
+ statement.Exec(alliancecolour, "971")
+ }
+ rows, _ := database.Query("SELECT id, alliancecolour, teamnumber FROM robots")
+
+ for rows.Next() {
+ rows.Scan(&id, &alliancecolour, &teamnumber)
+ fmt.Println(alliancecolour + ": " + strconv.Itoa(teamnumber))
+ }
+}
diff --git a/scouting/www/BUILD b/scouting/www/BUILD
new file mode 100644
index 0000000..88cadab
--- /dev/null
+++ b/scouting/www/BUILD
@@ -0,0 +1,57 @@
+load("@npm//@bazel/typescript:index.bzl", "ts_project")
+load("//tools/build_rules:js.bzl", "rollup_bundle")
+load("@npm//@bazel/concatjs:index.bzl", "concatjs_devserver")
+load("@npm//@babel/cli:index.bzl", "babel")
+
+ts_project(
+ name = "app",
+ srcs = glob([
+ "*.ts",
+ "*.ng.html",
+ ]),
+ tsc = "@npm//@angular/compiler-cli/bin:ngc",
+ tsconfig = "//:tsconfig.json",
+ visibility = ["//visibility:public"],
+ deps = [
+ "@npm//@angular/animations",
+ "@npm//@angular/common",
+ "@npm//@angular/compiler",
+ "@npm//@angular/core",
+ "@npm//@angular/platform-browser",
+ ],
+)
+
+rollup_bundle(
+ name = "main_bundle",
+ entry_point = "main.ts",
+ deps = [
+ "app",
+ ],
+)
+
+babel(
+ name = "main_bundle_compiled",
+ args = [
+ "$(execpath :main_bundle)",
+ "--no-babelrc",
+ "--source-maps",
+ "--plugins=@angular/compiler-cli/linker/babel",
+ "--out-dir",
+ "$(@D)",
+ ],
+ data = [
+ ":main_bundle",
+ "@npm//@angular/compiler-cli",
+ ],
+ output_dir = True,
+)
+
+concatjs_devserver(
+ name = "devserver",
+ serving_path = "/main_bundle.js",
+ static_files = [
+ ":index.html",
+ "@npm//:node_modules/zone.js/dist/zone.min.js",
+ ],
+ deps = [":main_bundle_compiled"],
+)
diff --git a/scouting/www/README.md b/scouting/www/README.md
new file mode 100644
index 0000000..f337ae5
--- /dev/null
+++ b/scouting/www/README.md
@@ -0,0 +1,4 @@
+Run using:
+bazel run //scouting/www:devserver
+
+Follow the instructions in the console to access locally.
diff --git a/scouting/www/app.ng.html b/scouting/www/app.ng.html
new file mode 100644
index 0000000..fb9ba26
--- /dev/null
+++ b/scouting/www/app.ng.html
@@ -0,0 +1,3 @@
+<h1>
+ This is an app.
+</h1>
diff --git a/scouting/www/app.ts b/scouting/www/app.ts
new file mode 100644
index 0000000..f6247d3
--- /dev/null
+++ b/scouting/www/app.ts
@@ -0,0 +1,8 @@
+import {Component} from '@angular/core';
+
+@Component({
+ selector: 'my-app',
+ templateUrl: './app.ng.html',
+})
+export class App {
+}
diff --git a/scouting/www/app_module.ts b/scouting/www/app_module.ts
new file mode 100644
index 0000000..3e34a17
--- /dev/null
+++ b/scouting/www/app_module.ts
@@ -0,0 +1,17 @@
+import {NgModule} from '@angular/core';
+import {BrowserModule} from '@angular/platform-browser';
+import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
+
+import {App} from './app';
+
+@NgModule({
+ declarations: [App],
+ imports: [
+ BrowserModule,
+ BrowserAnimationsModule,
+ ],
+ exports: [App],
+ bootstrap: [App],
+})
+export class AppModule {
+}
diff --git a/scouting/www/index.html b/scouting/www/index.html
new file mode 100644
index 0000000..cbe8770
--- /dev/null
+++ b/scouting/www/index.html
@@ -0,0 +1,10 @@
+<html>
+ <head>
+ <base href="/">
+ <script src="./npm/node_modules/zone.js/dist/zone.min.js"></script>
+ </head>
+ <body>
+ <my-app></my-app>
+ <script src="./main_bundle_compiled/main_bundle.js"></script>
+ </body>
+</html>
diff --git a/scouting/www/main.ts b/scouting/www/main.ts
new file mode 100644
index 0000000..e1a4ab5
--- /dev/null
+++ b/scouting/www/main.ts
@@ -0,0 +1,4 @@
+import {platformBrowser} from '@angular/platform-browser';
+import {AppModule} from './app_module';
+
+platformBrowser().bootstrapModule(AppModule);
diff --git a/third_party/bazel-toolchain/bazel_tools_changes/tools/cpp/unix_cc_toolchain_config.bzl b/third_party/bazel-toolchain/bazel_tools_changes/tools/cpp/unix_cc_toolchain_config.bzl
index 8e49eda..8de828f 100755
--- a/third_party/bazel-toolchain/bazel_tools_changes/tools/cpp/unix_cc_toolchain_config.bzl
+++ b/third_party/bazel-toolchain/bazel_tools_changes/tools/cpp/unix_cc_toolchain_config.bzl
@@ -201,6 +201,15 @@
with_features = [with_feature_set(features = ["opt"])],
),
flag_set(
+ actions = all_compile_actions,
+ flag_groups = ([
+ flag_group(
+ flags = ctx.attr.fastbuild_compile_flags,
+ ),
+ ] if ctx.attr.fastbuild_compile_flags else []),
+ with_features = [with_feature_set(features = ["fastbuild"])],
+ ),
+ flag_set(
actions = [ACTION_NAMES.c_compile],
flag_groups = ([
flag_group(
@@ -255,6 +264,8 @@
opt_feature = feature(name = "opt")
+ fastbuild_feature = feature(name = "fastbuild")
+
sysroot_feature = feature(
name = "sysroot",
enabled = True,
@@ -1218,6 +1229,7 @@
supports_dynamic_linker_feature,
dbg_feature,
opt_feature,
+ fastbuild_feature,
user_compile_flags_feature,
sysroot_feature,
unfiltered_compile_flags_feature,
@@ -1238,6 +1250,7 @@
supports_dynamic_linker_feature,
dbg_feature,
opt_feature,
+ fastbuild_feature,
user_compile_flags_feature,
sysroot_feature,
unfiltered_compile_flags_feature,
@@ -1276,6 +1289,7 @@
"compile_flags": attr.string_list(),
"dbg_compile_flags": attr.string_list(),
"opt_compile_flags": attr.string_list(),
+ "fastbuild_compile_flags": attr.string_list(),
"cxx_flags": attr.string_list(),
"c_flags": attr.string_list(),
"compile_not_cxx_flags": attr.string_list(),
diff --git a/third_party/bazel-toolchain/toolchain/cc_toolchain_config.bzl b/third_party/bazel-toolchain/toolchain/cc_toolchain_config.bzl
index ccadb7c..e429c40 100644
--- a/third_party/bazel-toolchain/toolchain/cc_toolchain_config.bzl
+++ b/third_party/bazel-toolchain/toolchain/cc_toolchain_config.bzl
@@ -46,6 +46,7 @@
copts,
opt_copts,
dbg_copts,
+ fastbuild_copts,
linkopts,
host_tools_info = {}):
host_os_arch_key = _os_arch_pair(host_os, host_arch)
@@ -157,6 +158,9 @@
"-fdata-sections",
]
+ fastbuild_compile_flags = [
+ ]
+
link_flags = [
"--target=" + target_system_name,
"-lm",
@@ -396,6 +400,7 @@
compile_flags.extend(copts)
dbg_compile_flags.extend(dbg_copts)
opt_compile_flags.extend(opt_copts)
+ fastbuild_compile_flags.extend(fastbuild_copts)
link_flags.extend(linkopts)
# Source: https://cs.opensource.google/bazel/bazel/+/master:tools/cpp/unix_cc_toolchain_config.bzl
@@ -414,6 +419,7 @@
compile_flags = compile_flags,
dbg_compile_flags = dbg_compile_flags,
opt_compile_flags = opt_compile_flags,
+ fastbuild_compile_flags = fastbuild_compile_flags,
cxx_flags = cxx_flags,
c_flags = conlyopts,
compile_not_cxx_flags = compile_not_cxx_flags,
diff --git a/third_party/bazel-toolchain/toolchain/internal/configure.bzl b/third_party/bazel-toolchain/toolchain/internal/configure.bzl
index 6a183fc..2d8124d 100644
--- a/third_party/bazel-toolchain/toolchain/internal/configure.bzl
+++ b/third_party/bazel-toolchain/toolchain/internal/configure.bzl
@@ -131,6 +131,7 @@
copts_dict = rctx.attr.copts,
opt_copts_dict = rctx.attr.opt_copts,
dbg_copts_dict = rctx.attr.dbg_copts,
+ fastbuild_copts_dict = rctx.attr.fastbuild_copts,
linkopts_dict = rctx.attr.linkopts,
)
host_tools_info = dict([
@@ -282,6 +283,7 @@
copts = toolchain_info.copts_dict.get(key, [])
opt_copts = toolchain_info.opt_copts_dict.get(key, [])
dbg_copts = toolchain_info.dbg_copts_dict.get(key, [])
+ fastbuild_copts = toolchain_info.fastbuild_copts_dict.get(key, [])
linkopts = toolchain_info.linkopts_dict.get(key, [])
target_toolchain_root = toolchain_info.toolchain_root
if key in toolchain_info.target_toolchain_roots_dict:
@@ -319,6 +321,7 @@
copts = {copts},
opt_copts = {opt_copts},
dbg_copts = {dbg_copts},
+ fastbuild_copts = {fastbuild_copts},
linkopts = {linkopts},
)
@@ -437,5 +440,6 @@
copts = copts,
opt_copts = opt_copts,
dbg_copts = dbg_copts,
+ fastbuild_copts = fastbuild_copts,
linkopts = linkopts,
)
diff --git a/third_party/bazel-toolchain/toolchain/rules.bzl b/third_party/bazel-toolchain/toolchain/rules.bzl
index f27e387..aad2d37 100644
--- a/third_party/bazel-toolchain/toolchain/rules.bzl
+++ b/third_party/bazel-toolchain/toolchain/rules.bzl
@@ -175,6 +175,13 @@
"({}), ".format(", ".join(_supported_os_arch_keys())) +
"used only with -c dbg."),
),
+ "fastbuild_copts": attr.string_list_dict(
+ mandatory = False,
+ doc = ("Extra flags for compiling C, C++, and assembly files, " +
+ "for each target OS and arch pair you want to support " +
+ "({}), ".format(", ".join(_supported_os_arch_keys())) +
+ "used only with -c fastbuild."),
+ ),
"linkopts": attr.string_list_dict(
mandatory = False,
doc = ("Extra flags to pass to the linker, " +
diff --git a/tools/build_rules/BUILD b/tools/build_rules/BUILD
index cf27ca0..aeb8517 100644
--- a/tools/build_rules/BUILD
+++ b/tools/build_rules/BUILD
@@ -12,3 +12,15 @@
visibility = ["//visibility:public"],
deps = ["@python_jinja2"],
)
+
+py_binary(
+ name = "apache_runner",
+ srcs = ["apache_runner.py"],
+ data = [
+ "apache_template.conf",
+ "@apache2//:all_files",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//visibility:public"],
+ deps = ["@python_jinja2"],
+)
diff --git a/tools/build_rules/apache.bzl b/tools/build_rules/apache.bzl
new file mode 100644
index 0000000..9fb2ef5
--- /dev/null
+++ b/tools/build_rules/apache.bzl
@@ -0,0 +1,82 @@
+def _apache_binary_impl(ctx):
+ binary_path = ctx.attr.binary.files_to_run.executable.short_path
+
+ out = ctx.actions.declare_file(ctx.label.name)
+ ctx.actions.write(out, """\
+#!/bin/bash
+
+exec ./tools/build_rules/apache_runner --binary "{}" "$@"
+""".format(binary_path), is_executable = True)
+
+ # Collect files and runfiles for the tools that we're wrapping.
+ files = depset(transitive = [
+ ctx.attr._apache_runner.files,
+ ctx.attr.binary.files,
+ ])
+
+ runfiles = ctx.attr._apache_runner.default_runfiles
+ runfiles = runfiles.merge(ctx.attr.binary.default_runfiles)
+
+ return [
+ DefaultInfo(
+ executable = out,
+ files = files,
+ runfiles = runfiles,
+ ),
+ ]
+
+apache_wrapper = rule(
+ implementation = _apache_binary_impl,
+ attrs = {
+ "binary": attr.label(
+ mandatory = True,
+ executable = True,
+ cfg = "target",
+ doc = "The binary that we're wrapping with LDAP+HTTPS.",
+ ),
+ "_apache_runner": attr.label(
+ default = "@//tools/build_rules:apache_runner",
+ executable = True,
+ cfg = "target",
+ ),
+ },
+ doc = """\
+This rule wraps another web server and provides LDAP and HTTPS support.
+
+It's not intended to be used in production. It's intended to provide team
+members with a way to test their code in a production-like environment. E.g. to
+test whether your server makes use of LDAP credentials correctly.
+
+Write this as a wrapper around another binary like so:
+
+ apache_wrapper(
+ name = "wrapped_server",
+ binary = "//path/to:server_binary",
+ )
+
+Then you can run Apache and the wrapped binary like so:
+
+ $ bazel run :wrapped_server
+
+The wrapped binary can find the port that Apache is wrapping via the
+APACHE_WRAPPED_PORT environment variable.
+
+This rule assumes that you have a file at the root of the workspace called
+"ldap.json". You can customize this path with the `--ldap_info` argument. The
+JSON file has to have these three entries in it:
+
+ {
+ "ldap_bind_dn": "...",
+ "ldap_url": "...",
+ "ldap_password": "..."
+ }
+
+where the "..." values are replaced with the information to connect to an LDAP
+server. If you want to connect to our FRC971 LDAP server, please contact a
+Software mentor. Or ask on the `#coding` Slack channel.
+
+If the default ports of 7000 and 7500 are already taken, you can change them via
+the `--https_port` and `--wrapped_port` arguments.
+""",
+ executable = True,
+)
diff --git a/tools/build_rules/apache_runner.py b/tools/build_rules/apache_runner.py
new file mode 100644
index 0000000..3364216
--- /dev/null
+++ b/tools/build_rules/apache_runner.py
@@ -0,0 +1,121 @@
+"""Starts up Apache to provide HTTPS + LDAP for another web server.
+
+This script is used by the apache_wrapper() rule as the main entrypoint for its
+"executable". This script sets up a minimal Apache environment in a directory
+in /tmp.
+
+Both Apache and the wrapped server binary are started by this script. The
+wrapped server should bind to the port specified by the APACHE_WRAPPED_PORT
+environment variable.
+
+See the documentation for apache_wrapper() for more information.
+"""
+
+import argparse
+import json
+import os
+from pathlib import Path
+import signal
+import subprocess
+import sys
+import tempfile
+
+import jinja2
+
+DUMMY_CERT_ANSWERS = """\
+US
+California
+Mountain View
+FRC971
+Software
+frc971.org
+dummy@frc971.org
+"""
+
+def main(argv):
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--binary", type=str, required=True)
+ parser.add_argument("--https_port", type=int, default=7000)
+ parser.add_argument("--wrapped_port", type=int, default=7500)
+ parser.add_argument(
+ "--ldap_info",
+ type=str,
+ help="JSON file containing 'ldap_bind_dn', 'ldap_url', and 'ldap_password' entries.",
+ default="",
+ )
+ args = parser.parse_args(argv[1:])
+
+ if not args.ldap_info:
+ args.ldap_info = os.path.join(os.environ["BUILD_WORKSPACE_DIRECTORY"], "ldap.json")
+
+ with open("tools/build_rules/apache_template.conf", "r") as file:
+ template = jinja2.Template(file.read())
+
+ with open(args.ldap_info, "r") as file:
+ substitutions = json.load(file)
+
+ for key in ("ldap_bind_dn", "ldap_url", "ldap_password"):
+ if key not in substitutions:
+ raise KeyError(f"The ldap_info JSON file must contain key '{key}'.")
+
+ substitutions.update({
+ "https_port": args.https_port,
+ "wrapped_port": args.wrapped_port,
+ })
+
+ config_text = template.render(substitutions)
+
+ with tempfile.TemporaryDirectory() as temp_dir:
+ temp_dir = Path(temp_dir)
+ with open(temp_dir / "apache2.conf", "w") as file:
+ file.write(config_text)
+
+ # Create a directory for error logs and such.
+ logs_dir = temp_dir / "logs"
+ os.mkdir(logs_dir)
+
+ print("-" * 60)
+ print(f"Logs are in {logs_dir}/")
+ print("-" * 60)
+
+ # Make modules available.
+ modules_path = Path("external/apache2/usr/lib/apache2/modules")
+ os.symlink(modules_path.resolve(), temp_dir / "modules")
+
+ # Generate a testing cert.
+ subprocess.run([
+ "openssl",
+ "req",
+ "-x509",
+ "-nodes",
+ "-days=365",
+ "-newkey=rsa:2048",
+ "-keyout=" + str(temp_dir / "apache-selfsigned.key"),
+ "-out=" + str(temp_dir / "apache-selfsigned.crt"),
+ ],
+ check=True,
+ input=DUMMY_CERT_ANSWERS,
+ text=True,
+ )
+
+ # Start the wrapped binary in the background.
+ # Tell it via the environment what port to listen on.
+ env = os.environ.copy()
+ env["APACHE_WRAPPED_PORT"] = str(args.wrapped_port)
+ wrapped_binary = subprocess.Popen([args.binary], env=env)
+
+ # Start the apache server.
+ env = os.environ.copy()
+ env["LD_LIBRARY_PATH"] = "external/apache2/usr/lib/x86_64-linux-gnu"
+ try:
+ subprocess.run(
+ ["external/apache2/usr/sbin/apache2", "-X", "-d", str(temp_dir)],
+ check=True,
+ env=env,
+ )
+ finally:
+ wrapped_binary.send_signal(signal.SIGINT)
+ wrapped_binary.wait()
+
+if __name__ == "__main__":
+ sys.exit(main(sys.argv))
diff --git a/tools/build_rules/apache_template.conf b/tools/build_rules/apache_template.conf
new file mode 100644
index 0000000..91a8338
--- /dev/null
+++ b/tools/build_rules/apache_template.conf
@@ -0,0 +1,57 @@
+PidFile logs/httpd.pid
+
+ServerTokens Prod
+UseCanonicalName On
+TraceEnable Off
+
+Listen 127.0.0.1:{{ https_port }}
+
+LoadModule mpm_event_module modules/mod_mpm_event.so
+LoadModule authn_core_module modules/mod_authn_core.so
+LoadModule authz_core_module modules/mod_authz_core.so
+LoadModule authz_user_module modules/mod_authz_user.so
+LoadModule auth_basic_module modules/mod_auth_basic.so
+LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
+LoadModule ldap_module modules/mod_ldap.so
+LoadModule proxy_module modules/mod_proxy.so
+LoadModule proxy_http_module modules/mod_proxy_http.so
+LoadModule ssl_module modules/mod_ssl.so
+
+{% raw %}
+ErrorLogFormat "[%{cu}t] [%-m:%-l] %-a %-L %M"
+LogFormat "%h %l %u [%{%Y-%m-%d %H:%M:%S}t.%{usec_frac}t] \"%r\" %>s %b \
+\"%{Referer}i\" \"%{User-Agent}i\"" combined
+{% endraw %}
+
+LogLevel debug
+ErrorLog logs/error.log
+CustomLog logs/access.log combined
+
+LDAPCacheEntries 1024
+LDAPCacheTTL 600
+LDAPTrustedGlobalCert CA_BASE64 "apache-selfsigned.crt"
+LDAPTrustedMode STARTTLS
+LDAPLibraryDebug 7
+LDAPVerifyServerCert OFF
+
+<VirtualHost *:{{ https_port }}>
+ ServerName localhost
+ ServerAdmin root@localhost
+
+ SSLEngine on
+ SSLProxyEngine On
+ SSLCertificateFile apache-selfsigned.crt
+ SSLCertificateKeyFile apache-selfsigned.key
+
+ ProxyPass "/" http://localhost:{{ wrapped_port }}/
+
+ <Location />
+ AuthName "Enter your Robotics 971 credentials"
+ AuthType Basic
+ AuthBasicProvider ldap
+ AuthLDAPBindDN "{{ ldap_bind_dn }}"
+ AuthLDAPBindPassword {{ ldap_password }}
+ AuthLDAPURL "{{ ldap_url }}"
+ Require valid-user
+ </Location>
+</VirtualHost>
diff --git a/tools/cpp/BUILD b/tools/cpp/BUILD
index 17f218e..6ff661a 100644
--- a/tools/cpp/BUILD
+++ b/tools/cpp/BUILD
@@ -76,6 +76,7 @@
srcs = [
":flags_compiler_inputs",
"//tools/cpp/arm-frc-linux-gnueabi:as",
+ "//tools/cpp/arm-frc-linux-gnueabi:libs",
"//tools/cpp/arm-frc-linux-gnueabi:tool-wrappers",
"@arm_frc_linux_gnueabi_repo//:compiler_pieces",
],
diff --git a/tools/dependency_rewrite b/tools/dependency_rewrite
index 3cafe9b..cc1de8c 100644
--- a/tools/dependency_rewrite
+++ b/tools/dependency_rewrite
@@ -5,6 +5,7 @@
rewrite dl.google.com/(.*) software.frc971.org/Build-Dependencies/dl.google.com/$1
rewrite mirror.bazel.build/(.*) software.frc971.org/Build-Dependencies/mirror.bazel.build/$1
rewrite nodejs.org/(.*) software.frc971.org/Build-Dependencies/nodejs.org/$1
+rewrite static.rust-lang.org/(.*) software.frc971.org/Build-Dependencies/static.rust-lang.org/$1
allow golang.org
allow software.frc971.org
diff --git a/tools/go/go_mirrors.bzl b/tools/go/go_mirrors.bzl
index 9addcef..0e8f394 100644
--- a/tools/go/go_mirrors.bzl
+++ b/tools/go/go_mirrors.bzl
@@ -315,4 +315,11 @@
"strip_prefix": "golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1",
"version": "v0.0.0-20200804184101-5ec99f83aff1",
},
+ "com_github_mattn_go_sqlite3": {
+ "filename": "com_github_mattn_go_sqlite3__v1.14.10.zip",
+ "importpath": "github.com/mattn/go-sqlite3",
+ "sha256": "3c1e6497b023fc4741bf1bbfb39ae657b99cf44cfb33f5cbf1e88b315d25a306",
+ "strip_prefix": "github.com/mattn/go-sqlite3@v1.14.10",
+ "version": "v1.14.10",
+ },
}
diff --git a/tools/platforms/BUILD b/tools/platforms/BUILD
index bb53ee1..d6a63c7 100644
--- a/tools/platforms/BUILD
+++ b/tools/platforms/BUILD
@@ -6,6 +6,7 @@
"@platforms//os:linux",
"@platforms//cpu:x86_64",
"//tools/platforms/go:has_support",
+ "//tools/platforms/rust:has_support",
],
)
@@ -16,6 +17,7 @@
"@platforms//cpu:armv7",
"//tools/platforms/hardware:raspberry_pi",
"//tools/platforms/go:lacks_support",
+ "//tools/platforms/rust:has_support",
],
)
@@ -25,6 +27,7 @@
"@platforms//os:linux",
"@platforms//cpu:arm64",
"//tools/platforms/go:lacks_support",
+ "//tools/platforms/rust:has_support",
],
)
@@ -35,6 +38,7 @@
"@platforms//cpu:armv7",
"//tools/platforms/hardware:roborio",
"//tools/platforms/go:lacks_support",
+ "//tools/platforms/rust:has_support",
],
)
@@ -44,6 +48,7 @@
"@platforms//os:none",
"//tools/platforms/hardware:cortex_m4f",
"//tools/platforms/go:lacks_support",
+ "//tools/platforms/rust:lacks_support",
],
)
@@ -53,6 +58,7 @@
"@platforms//os:none",
"//tools/platforms/hardware:cortex_m0plus",
"//tools/platforms/go:lacks_support",
+ "//tools/platforms/rust:lacks_support",
],
)
diff --git a/tools/platforms/rust/BUILD b/tools/platforms/rust/BUILD
new file mode 100644
index 0000000..5b4745f
--- /dev/null
+++ b/tools/platforms/rust/BUILD
@@ -0,0 +1,13 @@
+package(default_visibility = ["//visibility:public"])
+
+constraint_setting(name = "rust_support")
+
+constraint_value(
+ name = "has_support",
+ constraint_setting = ":rust_support",
+)
+
+constraint_value(
+ name = "lacks_support",
+ constraint_setting = ":rust_support",
+)
diff --git a/tools/rehost.sh b/tools/rehost.sh
index 86ca488..3031aba 100755
--- a/tools/rehost.sh
+++ b/tools/rehost.sh
@@ -7,6 +7,11 @@
readonly LOCALPATH="$(basename "${1}")"
+if echo "${1}" | grep --quiet http; then
+ echo "Argument must not include the scheme (remove the https://)" >&2
+ exit 1
+fi
+
set -e
curl -L "https://${1}" -o "${LOCALPATH}"
diff --git a/tools/rust/BUILD b/tools/rust/BUILD
new file mode 100644
index 0000000..a652530
--- /dev/null
+++ b/tools/rust/BUILD
@@ -0,0 +1,73 @@
+load("@rules_rust//rust:toolchain.bzl", "rust_stdlib_filegroup", "rust_toolchain")
+load("@bazel_skylib//rules:write_file.bzl", "write_file")
+
+# Similar to the one automatically generated by @rust, but with the correct
+# hardware platform configured.
+toolchain(
+ name = "rust-toolchain-roborio",
+ exec_compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:x86_64",
+ ],
+ target_compatible_with = [
+ "@platforms//os:linux",
+ "//tools/platforms/hardware:roborio",
+ ],
+ toolchain = "@rust//:toolchain_for_arm-unknown-linux-gnueabi_impl",
+ toolchain_type = "@rules_rust//rust:toolchain",
+)
+
+# The remainder of this file exists to create a NOOP toolchain for Rust on
+# platforms that don't support Rust. We can probably get rid of this once
+# https://github.com/bazelbuild/bazel/issues/12897 is fixed.
+
+write_file(
+ name = "noop_error_exit",
+ out = "noop_error_exit.sh",
+ content = [
+ "#!/bin/bash",
+ "echo 'This should never be executed. Something went wrong.' >&2",
+ "echo 'This NOOP Rust toolchain should never be executed. Something went wrong.' >&2",
+ "echo 'Check that your target has `target_compatible_with` set to a platform that supports Rust.' >&2",
+ "exit 1",
+ ],
+ is_executable = True,
+)
+
+rust_stdlib_filegroup(
+ name = "empty_stdlib",
+ srcs = [":noop_error_exit"],
+)
+
+rust_toolchain(
+ name = "noop_rust_toolchain_impl",
+ binary_ext = "",
+ cargo = ":noop_error_exit",
+ clippy_driver = ":noop_error_exit",
+ default_edition = "2021",
+ dylib_ext = ".so",
+ exec_triple = "none",
+ os = "none",
+ rust_doc = ":noop_error_exit",
+ rust_lib = ":empty_stdlib",
+ rustc = ":noop_error_exit",
+ rustc_lib = ":noop_error_exit",
+ rustc_srcs = None,
+ rustfmt = ":noop_error_exit",
+ staticlib_ext = ".a",
+ stdlib_linkflags = [],
+ tags = ["manual"],
+ target_triple = "none",
+)
+
+toolchain(
+ name = "noop_rust_toolchain",
+ exec_compatible_with = [
+ "@platforms//os:linux",
+ ],
+ target_compatible_with = [
+ "//tools/platforms/rust:lacks_support",
+ ],
+ toolchain = ":noop_rust_toolchain_impl",
+ toolchain_type = "@rules_rust//rust:toolchain",
+)
diff --git a/y2020/BUILD b/y2020/BUILD
index 95f6f74..ee4e628 100644
--- a/y2020/BUILD
+++ b/y2020/BUILD
@@ -156,9 +156,9 @@
"//aos/network:message_bridge_client_fbs",
"//aos/network:message_bridge_server_fbs",
"//aos/network:timestamp_fbs",
+ "//frc971/vision:vision_fbs",
"//y2020/vision/sift:sift_fbs",
"//y2020/vision/sift:sift_training_fbs",
- "//y2020/vision:vision_fbs",
],
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//visibility:public"],
@@ -180,12 +180,12 @@
flatbuffers = [
"//aos/network:message_bridge_client_fbs",
"//aos/network:message_bridge_server_fbs",
+ "//aos/network:remote_message_fbs",
"//aos/network:timestamp_fbs",
+ "//frc971/vision:vision_fbs",
+ "//y2020/vision:galactic_search_path_fbs",
"//y2020/vision/sift:sift_fbs",
"//y2020/vision/sift:sift_training_fbs",
- "//y2020/vision:vision_fbs",
- "//aos/network:remote_message_fbs",
- "//y2020/vision:galactic_search_path_fbs",
],
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//visibility:public"],
@@ -210,11 +210,11 @@
flatbuffers = [
"//aos/network:message_bridge_client_fbs",
"//aos/network:message_bridge_server_fbs",
+ "//aos/network:remote_message_fbs",
"//aos/network:timestamp_fbs",
+ "//frc971/vision:vision_fbs",
"//y2020/vision/sift:sift_fbs",
"//y2020/vision/sift:sift_training_fbs",
- "//y2020/vision:vision_fbs",
- "//aos/network:remote_message_fbs",
],
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//visibility:public"],
diff --git a/y2020/vision/BUILD b/y2020/vision/BUILD
index d94de5a..5156b59 100644
--- a/y2020/vision/BUILD
+++ b/y2020/vision/BUILD
@@ -1,12 +1,4 @@
-load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library", "flatbuffer_ts_library")
-
-flatbuffer_cc_library(
- name = "vision_fbs",
- srcs = ["vision.fbs"],
- gen_reflections = 1,
- target_compatible_with = ["@platforms//os:linux"],
- visibility = ["//y2020:__subpackages__"],
-)
+load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
flatbuffer_cc_library(
name = "galactic_search_path_fbs",
@@ -16,25 +8,6 @@
visibility = ["//y2020:__subpackages__"],
)
-cc_library(
- name = "v4l2_reader",
- srcs = [
- "v4l2_reader.cc",
- ],
- hdrs = [
- "v4l2_reader.h",
- ],
- target_compatible_with = ["@platforms//os:linux"],
- visibility = ["//y2020:__subpackages__"],
- deps = [
- ":vision_fbs",
- "//aos/events:event_loop",
- "//aos/scoped:scoped_fd",
- "@com_github_google_glog//:glog",
- "@com_google_absl//absl/base",
- ],
-)
-
cc_binary(
name = "camera_reader",
srcs = [
@@ -61,13 +34,13 @@
"//y2020:config",
],
target_compatible_with = ["@platforms//os:linux"],
- visibility = ["//y2020:__subpackages__"],
+ visibility = ["//y2020:__subpackages__"] + ["//y2022:__subpackages__"],
deps = [
- ":v4l2_reader",
- ":vision_fbs",
"//aos:flatbuffer_merge",
"//aos/events:event_loop",
"//aos/network:team_number",
+ "//frc971/vision:v4l2_reader",
+ "//frc971/vision:vision_fbs",
"//third_party:opencv",
"//y2020/vision/sift:sift971",
"//y2020/vision/sift:sift_fbs",
@@ -76,13 +49,6 @@
],
)
-flatbuffer_ts_library(
- name = "vision_ts_fbs",
- srcs = ["vision.fbs"],
- target_compatible_with = ["@platforms//os:linux"],
- visibility = ["//y2020:__subpackages__"],
-)
-
cc_binary(
name = "viewer",
srcs = [
@@ -94,9 +60,10 @@
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//y2020:__subpackages__"],
deps = [
- ":vision_fbs",
"//aos:init",
"//aos/events:shm_event_loop",
+ "//frc971/vision:v4l2_reader",
+ "//frc971/vision:vision_fbs",
"//third_party:opencv",
"//y2020/vision/sift:sift_fbs",
],
@@ -113,12 +80,12 @@
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//y2020:__subpackages__"],
deps = [
- ":vision_fbs",
"//aos:flatbuffers",
"//aos/events:event_loop",
"//aos/network:message_bridge_server_fbs",
"//aos/network:team_number",
"//frc971/control_loops:quaternion_utils",
+ "//frc971/vision:vision_fbs",
"//third_party:opencv",
"//y2020/vision/sift:sift_fbs",
"//y2020/vision/sift:sift_training_fbs",
@@ -142,10 +109,10 @@
visibility = ["//y2020:__subpackages__"],
deps = [
":charuco_lib",
- ":vision_fbs",
"//aos:init",
"//aos/events:shm_event_loop",
"//frc971/control_loops/drivetrain:improved_down_estimator",
+ "//frc971/vision:vision_fbs",
"//frc971/wpilib:imu_batch_fbs",
"//frc971/wpilib:imu_fbs",
"//third_party:opencv",
@@ -168,10 +135,10 @@
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//y2020:__subpackages__"],
deps = [
- ":vision_fbs",
"//aos:init",
"//aos/events:simulated_event_loop",
"//aos/events/logging:log_reader",
+ "//frc971/vision:vision_fbs",
"//third_party:opencv",
],
)
diff --git a/y2020/vision/camera_reader.cc b/y2020/vision/camera_reader.cc
index 1e28e82..9966a5b 100644
--- a/y2020/vision/camera_reader.cc
+++ b/y2020/vision/camera_reader.cc
@@ -9,12 +9,12 @@
#include "aos/events/event_loop.h"
#include "aos/flatbuffer_merge.h"
#include "aos/network/team_number.h"
+#include "frc971/vision/v4l2_reader.h"
+#include "frc971/vision/vision_generated.h"
#include "y2020/vision/sift/sift971.h"
#include "y2020/vision/sift/sift_generated.h"
#include "y2020/vision/sift/sift_training_generated.h"
#include "y2020/vision/tools/python_code/sift_training_data.h"
-#include "y2020/vision/v4l2_reader.h"
-#include "y2020/vision/vision_generated.h"
DEFINE_bool(skip_sift, false,
"If true don't run any feature extraction. Just forward images.");
diff --git a/y2020/vision/camera_reader.h b/y2020/vision/camera_reader.h
index c05ebea..37fb5a9 100644
--- a/y2020/vision/camera_reader.h
+++ b/y2020/vision/camera_reader.h
@@ -10,12 +10,12 @@
#include "aos/events/event_loop.h"
#include "aos/flatbuffer_merge.h"
#include "aos/network/team_number.h"
+#include "frc971/vision/v4l2_reader.h"
+#include "frc971/vision/vision_generated.h"
#include "y2020/vision/sift/sift971.h"
#include "y2020/vision/sift/sift_generated.h"
#include "y2020/vision/sift/sift_training_generated.h"
#include "y2020/vision/tools/python_code/sift_training_data.h"
-#include "y2020/vision/v4l2_reader.h"
-#include "y2020/vision/vision_generated.h"
namespace frc971 {
namespace vision {
diff --git a/y2020/vision/charuco_lib.cc b/y2020/vision/charuco_lib.cc
index 21bdcc3..0df820b 100644
--- a/y2020/vision/charuco_lib.cc
+++ b/y2020/vision/charuco_lib.cc
@@ -11,11 +11,11 @@
#include "aos/flatbuffers.h"
#include "aos/network/team_number.h"
#include "frc971/control_loops/quaternion_utils.h"
+#include "frc971/vision/vision_generated.h"
#include "glog/logging.h"
#include "y2020/vision/sift/sift_generated.h"
#include "y2020/vision/sift/sift_training_generated.h"
#include "y2020/vision/tools/python_code/sift_training_data.h"
-#include "y2020/vision/vision_generated.h"
DEFINE_uint32(min_targets, 10,
"The mininum number of targets required to match.");
@@ -133,8 +133,7 @@
const monotonic_clock::time_point eof = eof_source_node - offset;
- const monotonic_clock::duration age =
- event_loop_->monotonic_now() - eof;
+ const monotonic_clock::duration age = event_loop_->monotonic_now() - eof;
const double age_double =
std::chrono::duration_cast<std::chrono::duration<double>>(age).count();
if (age > std::chrono::milliseconds(100)) {
diff --git a/y2020/vision/extrinsics_calibration.cc b/y2020/vision/extrinsics_calibration.cc
index 1d4de28..c7ef752 100644
--- a/y2020/vision/extrinsics_calibration.cc
+++ b/y2020/vision/extrinsics_calibration.cc
@@ -12,13 +12,13 @@
#include "frc971/analysis/in_process_plotter.h"
#include "frc971/control_loops/drivetrain/improved_down_estimator.h"
#include "frc971/control_loops/quaternion_utils.h"
+#include "frc971/vision/vision_generated.h"
#include "frc971/wpilib/imu_batch_generated.h"
#include "y2020/vision/calibration_accumulator.h"
#include "y2020/vision/charuco_lib.h"
#include "y2020/vision/sift/sift_generated.h"
#include "y2020/vision/sift/sift_training_generated.h"
#include "y2020/vision/tools/python_code/sift_training_data.h"
-#include "y2020/vision/vision_generated.h"
DEFINE_string(config, "config.json", "Path to the config file to use.");
DEFINE_string(pi, "pi-7971-2", "Pi name to calibrate.");
@@ -120,7 +120,7 @@
const Eigen::Quaternion<Scalar> &orientation() const { return orientation_; }
- std::vector<Eigen::Matrix<Scalar, 3, 1> > errors_;
+ std::vector<Eigen::Matrix<Scalar, 3, 1>> errors_;
// Returns the angular errors for each camera sample.
size_t num_errors() const { return errors_.size(); }
@@ -136,18 +136,18 @@
result.template block<4, 1>(0, 0) = q.coeffs();
result.template block<6, 1>(4, 0) = x_hat;
result.template block<36, 1>(10, 0) =
- Eigen::Map<Eigen::Matrix<Scalar, 36, 1> >(p.data(), p.size());
+ Eigen::Map<Eigen::Matrix<Scalar, 36, 1>>(p.data(), p.size());
return result;
}
std::tuple<Eigen::Quaternion<Scalar>, Eigen::Matrix<Scalar, 6, 1>,
- Eigen::Matrix<Scalar, 6, 6> >
+ Eigen::Matrix<Scalar, 6, 6>>
UnPack(Eigen::Matrix<Scalar, 46, 1> input) {
Eigen::Quaternion<Scalar> q(input.template block<4, 1>(0, 0));
Eigen::Matrix<Scalar, 6, 1> x_hat(input.template block<6, 1>(4, 0));
Eigen::Matrix<Scalar, 6, 6> p =
- Eigen::Map<Eigen::Matrix<Scalar, 6, 6> >(input.data() + 10, 6, 6);
+ Eigen::Map<Eigen::Matrix<Scalar, 6, 6>>(input.data() + 10, 6, 6);
return std::make_tuple(q, x_hat, p);
}
@@ -361,8 +361,8 @@
std::vector<double> imu_ratez;
std::vector<double> times_;
- std::vector<Eigen::Matrix<double, 6, 1> > x_hats_;
- std::vector<Eigen::Quaternion<double> > orientations_;
+ std::vector<Eigen::Matrix<double, 6, 1>> x_hats_;
+ std::vector<Eigen::Quaternion<double>> orientations_;
Eigen::Matrix<double, 3, 1> last_accel_ = Eigen::Matrix<double, 3, 1>::Zero();
};
diff --git a/y2020/vision/rootfs/README.md b/y2020/vision/rootfs/README.md
deleted file mode 100644
index 0f66864..0000000
--- a/y2020/vision/rootfs/README.md
+++ /dev/null
@@ -1,32 +0,0 @@
-This modifies a stock debian root filesystem to be able to operate as a vision
-pi. It is not trying to be reproducible, but should be good enough for FRC
-purposes.
-
-The default hostname and IP is pi-8971-1, 10.89.71.101.
- Username pi, password raspberry.
-
-Download 2020-08-20-raspios-buster-armhf-lite.img (or any newer buster
-version, as a .zip file) from
-`https://www.raspberrypi.org/downloads/raspberry-pi-os/` (or
-`https://downloads.raspberrypi.org/raspios_lite_armhf/images/` for
-older images), extract (unzip) the .img file, and edit
-`modify_rootfs.sh` to point to it.
-
-Run modify_rootfs.sh to build the filesystem (you might need to hit
-return in a spot or two and will need sudo privileges to mount the
-partition).
-
-After confirming the target device, deploy by copying the contents of the image
-to the SD card.
-
- `dd if=2020-02-13-raspbian-buster-lite.img of=/dev/sdX bs=1M`
-
-Use `lsblk` to find the device and make absolutely sure this isn't your hard
-drive or something else.
-
-From there, log in, `sudo` to `root`, and run `/root/bin/change_hostname.sh` to
-change the hostname to the actual target.
-
-A couple additional notes on setting this up:
- * You'll likely need to install (`sudo apt install`) the emulation packages `proot` and `qemu-user-static` (or possibly `qemu-arm-static`)
- * If the modify_root.sh script fails, you may need to manually unmount the image (`sudo umount ${IMAGE}`) before running it again
diff --git a/y2020/vision/rootfs/make_sd.sh b/y2020/vision/rootfs/make_sd.sh
deleted file mode 100755
index eba47bc..0000000
--- a/y2020/vision/rootfs/make_sd.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-
-set -e
-
-IMAGE="2020-08-20-raspios-buster-armhf-lite.img"
-DEVICE="/dev/sda"
-
-if mount | grep "${DEVICE}" >/dev/null ;
-then
- echo "Overwriting a mounted partition, is ${DEVICE} the sd card?"
- exit 1
-fi
-
-sudo dd if=${IMAGE} of=${DEVICE} bs=1M status=progress
-
-PARTITION="${IMAGE}.partition"
-
-mkdir -p "${PARTITION}"
-sudo mount "${DEVICE}2" "${PARTITION}"
-
-function target() {
- HOME=/root/ USER=root sudo proot -0 -q qemu-arm-static -w / -r "${PARTITION}" "$@"
-}
-
-target /root/bin/change_hostname.sh "${1}"
-
-echo "Starting a shell for any manual configuration"
-target /bin/bash --rcfile /root/.bashrc
-
-sudo umount "${PARTITION}"
diff --git a/y2020/vision/tools/python_code/BUILD b/y2020/vision/tools/python_code/BUILD
index b495658..d259ba7 100644
--- a/y2020/vision/tools/python_code/BUILD
+++ b/y2020/vision/tools/python_code/BUILD
@@ -192,8 +192,8 @@
deps = [
":sift_training_data_test",
"//aos/testing:googletest",
+ "//frc971/vision:vision_fbs",
"//third_party:opencv",
- "//y2020/vision:vision_fbs",
"//y2020/vision/sift:sift_fbs",
"//y2020/vision/sift:sift_training_fbs",
],
diff --git a/y2020/vision/tools/python_code/camera_definition.py b/y2020/vision/tools/python_code/camera_definition.py
index 465f7bd..3e3623d 100644
--- a/y2020/vision/tools/python_code/camera_definition.py
+++ b/y2020/vision/tools/python_code/camera_definition.py
@@ -147,8 +147,8 @@
dist_coeffs = np.asarray(calib_dict["dist_coeffs"]).reshape(
(1, 5))
- glog.info("Found calib for " + node_name + ", team #" +
- str(team_number))
+ glog.debug("Found calib for " + node_name + ", team #" +
+ str(team_number))
camera_params = CameraParameters()
camera_params.camera_ext, camera_params.turret_ext = compute_extrinsic_by_pi(
diff --git a/y2020/vision/tools/python_code/camera_param_test.cc b/y2020/vision/tools/python_code/camera_param_test.cc
index 483fe75..a2d3a75 100644
--- a/y2020/vision/tools/python_code/camera_param_test.cc
+++ b/y2020/vision/tools/python_code/camera_param_test.cc
@@ -12,9 +12,9 @@
#include "y2020/vision/tools/python_code/sift_training_data.h"
#endif
+#include "frc971/vision/vision_generated.h"
#include "y2020/vision/sift/sift_generated.h"
#include "y2020/vision/sift/sift_training_generated.h"
-#include "y2020/vision/vision_generated.h"
namespace frc971 {
namespace vision {
diff --git a/y2020/vision/tools/python_code/target_definition.py b/y2020/vision/tools/python_code/target_definition.py
index e518c8c..0266997 100644
--- a/y2020/vision/tools/python_code/target_definition.py
+++ b/y2020/vision/tools/python_code/target_definition.py
@@ -5,6 +5,7 @@
import json
import math
import numpy as np
+import os
import camera_definition
import define_training_data as dtd
@@ -135,8 +136,7 @@
"target_definitions/ideal_power_port_red.json",
"target_definitions/ideal_power_port_blue.json")
training_target_list = TargetData.from_jsons(
- "target_definitions/cc_power_port_red_base_2021-10-29_15-08-50.json",
- "target_definitions/cc_power_port_blue_base_2021-10-29_15-14-21.json")
+ "target_definitions/mvhs_power_port_red_base_2021-11-06_14-18-22.json")
return ideal_target_list, training_target_list
@@ -153,7 +153,10 @@
# otherwise get them directly from the training targets.
for target in (ideal_target_list
if AUTO_PROJECTION else training_target_list):
- glog.debug("\nPreparing target for image %s" % target.image_filename)
+ # TODO<Jim>: Save this info to flatbuffer and publish on start
+ # And then, make this debug message again
+ glog.debug("\nPreparing target for image %s" %
+ os.path.basename(target.image_filename))
target.extract_features(feature_extractor)
target.filter_keypoints_by_polygons()
target.compute_reprojection_maps()
diff --git a/y2020/vision/tools/python_code/target_definitions/ideal_power_port_taped_night.json b/y2020/vision/tools/python_code/target_definitions/ideal_power_port_taped_night.json
deleted file mode 100644
index 303838a..0000000
--- a/y2020/vision/tools/python_code/target_definitions/ideal_power_port_taped_night.json
+++ /dev/null
@@ -1 +0,0 @@
-{"image_filename": "test_images/partial_971_power_port_red_nighttime.png", "polygon_list": [[[217, 425], [215, 187], [78, 189], [212, 80], [344, 74], [347, 180], [370, 421]]], "polygon_list_3d": [[[-7.9915, 1.089, 0.0], [-7.9915, 1.089, 2.0193], [-7.9915, -0.11749999999999994, 2.0193], [-7.9915, 1.089, 3.0225999999999997], [-7.9915, 2.3082, 3.0225999999999997], [-7.9915, 2.3082, 2.0193], [-7.9915, 2.3082, 0.0]]], "target_rotation": [[-1.0, -0.0, -0.0], [-0.0, -1.0, -0.0], [-0.0, -0.0, -1.0]], "target_position": [-7.9915, 1.6985999999999999, 2.464], "target_point_2d": [[[282.0, 132.0]]], "target_radius": 12.0}
\ No newline at end of file
diff --git a/y2020/vision/tools/python_code/target_definitions/mvhs_power_port_red_base.json b/y2020/vision/tools/python_code/target_definitions/mvhs_power_port_red_base.json
new file mode 100644
index 0000000..d951e13
--- /dev/null
+++ b/y2020/vision/tools/python_code/target_definitions/mvhs_power_port_red_base.json
@@ -0,0 +1 @@
+{"image_filename": "test_images/partial_971_power_port_red_daytime.png", "polygon_list": [[[198, 473], [203, 154], [23, 156], [204, 19], [374, 16], [381, 152], [397, 467]]], "polygon_list_3d": [[[-7.9915, 1.089, 0.0], [-7.9915, 1.089, 2.0193], [-7.9915, -0.11749999999999994, 2.0193], [-7.9915, 1.089, 3.0225999999999997], [-7.9915, 2.3082, 3.0225999999999997], [-7.9915, 2.3082, 2.0193], [-7.9915, 2.3082, 0.0]]], "target_rotation": [[-1.0, -0.0, -0.0], [-0.0, -1.0, -0.0], [-0.0, -0.0, -1.0]], "target_position": [-7.9915, 1.6985999999999999, 2.464], "target_point_2d": [[[290.0, 87.0]]], "target_radius": 12.0}
\ No newline at end of file
diff --git a/y2020/vision/tools/python_code/target_definitions/mvhs_power_port_red_base_2021-11-06_14-18-22.json b/y2020/vision/tools/python_code/target_definitions/mvhs_power_port_red_base_2021-11-06_14-18-22.json
new file mode 100644
index 0000000..82fdd9b
--- /dev/null
+++ b/y2020/vision/tools/python_code/target_definitions/mvhs_power_port_red_base_2021-11-06_14-18-22.json
@@ -0,0 +1 @@
+{"image_filename": "test_images/mvhs_power_port_red-2021-11-06.png", "polygon_list": [[[196, 435], [197, 178], [43, 178], [200, 74], [331, 68], [338, 173], [353, 428]]], "polygon_list_3d": [[[-7.9915, 1.089, 0.0], [-7.9915, 1.089, 2.0193], [-7.9915, -0.11749999999999994, 2.0193], [-7.9915, 1.089, 3.0225999999999997], [-7.9915, 2.3082, 3.0225999999999997], [-7.9915, 2.3082, 2.0193], [-7.9915, 2.3082, 0.0]]], "target_rotation": [[-1.0, -0.0, -0.0], [-0.0, -1.0, -0.0], [-0.0, -0.0, -1.0]], "target_position": [-7.9915, 1.6985999999999999, 2.464], "target_point_2d": [[[265.0, 123.0]]], "target_radius": 12.0}
\ No newline at end of file
diff --git a/y2020/vision/tools/python_code/target_definitions/training_target_power_port_taped_night.json b/y2020/vision/tools/python_code/target_definitions/training_target_power_port_taped_night.json
deleted file mode 100644
index 303838a..0000000
--- a/y2020/vision/tools/python_code/target_definitions/training_target_power_port_taped_night.json
+++ /dev/null
@@ -1 +0,0 @@
-{"image_filename": "test_images/partial_971_power_port_red_nighttime.png", "polygon_list": [[[217, 425], [215, 187], [78, 189], [212, 80], [344, 74], [347, 180], [370, 421]]], "polygon_list_3d": [[[-7.9915, 1.089, 0.0], [-7.9915, 1.089, 2.0193], [-7.9915, -0.11749999999999994, 2.0193], [-7.9915, 1.089, 3.0225999999999997], [-7.9915, 2.3082, 3.0225999999999997], [-7.9915, 2.3082, 2.0193], [-7.9915, 2.3082, 0.0]]], "target_rotation": [[-1.0, -0.0, -0.0], [-0.0, -1.0, -0.0], [-0.0, -0.0, -1.0]], "target_position": [-7.9915, 1.6985999999999999, 2.464], "target_point_2d": [[[282.0, 132.0]]], "target_radius": 12.0}
\ No newline at end of file
diff --git a/y2020/vision/tools/python_code/test_images/mvhs_power_port_red-2021-11-06.png b/y2020/vision/tools/python_code/test_images/mvhs_power_port_red-2021-11-06.png
new file mode 100644
index 0000000..918c9cf
--- /dev/null
+++ b/y2020/vision/tools/python_code/test_images/mvhs_power_port_red-2021-11-06.png
Binary files differ
diff --git a/y2020/vision/tools/python_code/test_images/partial_971_power_port_red.png b/y2020/vision/tools/python_code/test_images/partial_971_power_port_red.png
deleted file mode 100644
index ec402c0..0000000
--- a/y2020/vision/tools/python_code/test_images/partial_971_power_port_red.png
+++ /dev/null
Binary files differ
diff --git a/y2020/vision/tools/python_code/test_images/partial_971_power_port_red_nighttime.png b/y2020/vision/tools/python_code/test_images/partial_971_power_port_red_nighttime.png
deleted file mode 100644
index 6f4a54c..0000000
--- a/y2020/vision/tools/python_code/test_images/partial_971_power_port_red_nighttime.png
+++ /dev/null
Binary files differ
diff --git a/y2020/vision/tools/python_code/test_images/test_VR_sample1.png b/y2020/vision/tools/python_code/test_images/test_VR_sample1.png
deleted file mode 100644
index 86495b2..0000000
--- a/y2020/vision/tools/python_code/test_images/test_VR_sample1.png
+++ /dev/null
Binary files differ
diff --git a/y2020/vision/tools/python_code/test_images/test_raspi3_sample.jpg b/y2020/vision/tools/python_code/test_images/test_raspi3_sample.jpg
deleted file mode 100644
index 376149c..0000000
--- a/y2020/vision/tools/python_code/test_images/test_raspi3_sample.jpg
+++ /dev/null
Binary files differ
diff --git a/y2020/vision/tools/python_code/test_images/test_taped_dusk-2021-04-03-19-30-00.png b/y2020/vision/tools/python_code/test_images/test_taped_dusk-2021-04-03-19-30-00.png
deleted file mode 100644
index fb4952e..0000000
--- a/y2020/vision/tools/python_code/test_images/test_taped_dusk-2021-04-03-19-30-00.png
+++ /dev/null
Binary files differ
diff --git a/y2020/vision/tools/python_code/test_images/train_cafeteria-2020-02-13-16-27-25.png b/y2020/vision/tools/python_code/test_images/train_cafeteria-2020-02-13-16-27-25.png
deleted file mode 100644
index be67176..0000000
--- a/y2020/vision/tools/python_code/test_images/train_cafeteria-2020-02-13-16-27-25.png
+++ /dev/null
Binary files differ
diff --git a/y2020/vision/tools/python_code/test_images/train_loading_bay.xcf b/y2020/vision/tools/python_code/test_images/train_loading_bay.xcf
deleted file mode 100644
index 6bc62f5..0000000
--- a/y2020/vision/tools/python_code/test_images/train_loading_bay.xcf
+++ /dev/null
Binary files differ
diff --git a/y2020/vision/tools/python_code/test_images/train_power_port_red.xcf b/y2020/vision/tools/python_code/test_images/train_power_port_red.xcf
deleted file mode 100644
index ad6bed1..0000000
--- a/y2020/vision/tools/python_code/test_images/train_power_port_red.xcf
+++ /dev/null
Binary files differ
diff --git a/y2020/vision/tools/python_code/test_images/train_power_port_taped-2020-08-20-13-27-50.png b/y2020/vision/tools/python_code/test_images/train_power_port_taped-2020-08-20-13-27-50.png
deleted file mode 100644
index b635a12..0000000
--- a/y2020/vision/tools/python_code/test_images/train_power_port_taped-2020-08-20-13-27-50.png
+++ /dev/null
Binary files differ
diff --git a/y2020/vision/tools/python_code/train_and_match.py b/y2020/vision/tools/python_code/train_and_match.py
index 6250da1..ca67095 100644
--- a/y2020/vision/tools/python_code/train_and_match.py
+++ b/y2020/vision/tools/python_code/train_and_match.py
@@ -52,13 +52,13 @@
# Load feature extractor based on extractor name
# Returns feature extractor object
def load_feature_extractor():
- if FEATURE_EXTRACTOR_NAME is 'SIFT':
+ if FEATURE_EXTRACTOR_NAME == 'SIFT':
# Initiate SIFT detector
feature_extractor = cv2.SIFT_create()
- elif FEATURE_EXTRACTOR_NAME is 'SURF':
+ elif FEATURE_EXTRACTOR_NAME == 'SURF':
# Initiate SURF detector
feature_extractor = cv2.xfeatures2d.SURF_create()
- elif FEATURE_EXTRACTOR_NAME is 'ORB':
+ elif FEATURE_EXTRACTOR_NAME == 'ORB':
# Initiate ORB detector
feature_extractor = cv2.ORB_create()
@@ -78,7 +78,7 @@
kp, des = feature_extractor.detectAndCompute(image_list[i], None)
descriptor_lists.append(des)
keypoint_lists.append(kp)
- elif FEATURE_EXTRACTOR_NAME is 'ORB':
+ elif FEATURE_EXTRACTOR_NAME == 'ORB':
# TODO: Check whether ORB extractor can do detectAndCompute.
# If so, we don't need to have this branch for ORB
for i in range(len(image_list)):
@@ -104,7 +104,7 @@
matcher = cv2.FlannBasedMatcher(index_params, search_params)
matcher.add(descriptor_lists)
matcher.train()
- elif FEATURE_EXTRACTOR_NAME is 'ORB':
+ elif FEATURE_EXTRACTOR_NAME == 'ORB':
# Use FLANN LSH for ORB
FLANN_INDEX_LSH = 6
index_params = dict(
@@ -144,7 +144,7 @@
good_matches_list.append(good_matches)
- elif FEATURE_EXTRACTOR_NAME is 'ORB':
+ elif FEATURE_EXTRACTOR_NAME == 'ORB':
matches = matcher.knnMatch(train_keypoint_lists[0], desc_query, k=2)
good_matches = []
for m in matches:
diff --git a/y2020/vision/viewer.cc b/y2020/vision/viewer.cc
index 2aff3fb..37ff4a3 100644
--- a/y2020/vision/viewer.cc
+++ b/y2020/vision/viewer.cc
@@ -8,8 +8,9 @@
#include "aos/events/shm_event_loop.h"
#include "aos/init.h"
#include "aos/time/time.h"
+#include "frc971/vision/v4l2_reader.h"
+#include "frc971/vision/vision_generated.h"
#include "y2020/vision/sift/sift_generated.h"
-#include "y2020/vision/vision_generated.h"
DEFINE_string(config, "config.json", "Path to the config file to use.");
DEFINE_bool(show_features, true, "Show the SIFT features that matched.");
diff --git a/y2020/vision/viewer_replay.cc b/y2020/vision/viewer_replay.cc
index 93e531d..a818859 100644
--- a/y2020/vision/viewer_replay.cc
+++ b/y2020/vision/viewer_replay.cc
@@ -6,7 +6,7 @@
#include "aos/events/logging/log_reader.h"
#include "aos/events/simulated_event_loop.h"
#include "aos/init.h"
-#include "y2020/vision/vision_generated.h"
+#include "frc971/vision/vision_generated.h"
DEFINE_string(node, "pi1", "Node name to replay.");
DEFINE_string(image_save_prefix, "/tmp/img",
diff --git a/y2020/www/BUILD b/y2020/www/BUILD
index 27c0392..8467994 100644
--- a/y2020/www/BUILD
+++ b/y2020/www/BUILD
@@ -15,7 +15,7 @@
"//aos/network:connect_ts_fbs",
"//aos/network:web_proxy_ts_fbs",
"//aos/network/www:proxy",
- "//y2020/vision:vision_ts_fbs",
+ "//frc971/vision:vision_ts_fbs",
"//y2020/vision/sift:sift_ts_fbs",
"@com_github_google_flatbuffers//ts:flatbuffers_ts",
],
diff --git a/y2020/www/image_handler.ts b/y2020/www/image_handler.ts
index b254f2c..661100b 100644
--- a/y2020/www/image_handler.ts
+++ b/y2020/www/image_handler.ts
@@ -4,7 +4,7 @@
import {ByteBuffer} from 'org_frc971/external/com_github_google_flatbuffers/ts/byte-buffer';
import {Long} from 'org_frc971/external/com_github_google_flatbuffers/ts/long';
import * as sift from 'org_frc971/y2020/vision/sift/sift_generated'
-import * as vision from 'org_frc971/y2020/vision/vision_generated';
+import * as vision from 'org_frc971/frc971/vision/vision_generated';
import * as web_proxy from 'org_frc971/aos/network/web_proxy_generated';
import Channel = configuration.aos.Channel;
diff --git a/y2022/BUILD b/y2022/BUILD
index dba5796..2173877 100644
--- a/y2022/BUILD
+++ b/y2022/BUILD
@@ -1,19 +1,152 @@
load("//frc971:downloader.bzl", "robot_downloader")
load("//aos:config.bzl", "aos_config")
+load("//tools/build_rules:template.bzl", "jinja2_template")
robot_downloader(
+ binaries = [
+ "//aos/network:web_proxy_main",
+ ],
data = [
":config",
],
start_binaries = [
+ "//aos/events/logging:logger_main",
+ "//aos/network:web_proxy_main",
":joystick_reader",
":wpilib_interface",
+ "//aos/network:message_bridge_client",
+ "//aos/network:message_bridge_server",
+ "//y2022/actors:binaries",
"//y2022/control_loops/drivetrain:drivetrain",
"//y2022/control_loops/superstructure:superstructure",
- "//y2022/actors:binaries",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+)
+
+robot_downloader(
+ name = "pi_download",
+ binaries = [
+ "//y2022/vision:viewer",
+ ],
+ data = [
+ ":config",
+ ],
+ start_binaries = [
+ "//aos/events/logging:logger_main",
+ "//aos/network:message_bridge_client",
+ "//aos/network:message_bridge_server",
+ "//aos/network:web_proxy_main",
+ "//y2022/vision:camera_reader",
+ ],
+ target_compatible_with = ["//tools/platforms/hardware:raspberry_pi"],
+ target_type = "pi",
+)
+
+aos_config(
+ name = "config",
+ src = "y2022.json",
+ flatbuffers = [
+ "//aos/network:message_bridge_client_fbs",
+ "//aos/network:message_bridge_server_fbs",
+ "//aos/network:timestamp_fbs",
+ "//frc971/input:robot_state_fbs",
+ "//frc971/vision:vision_fbs",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":config_logger",
+ ":config_pi1",
+ ":config_pi2",
+ ":config_pi3",
+ ":config_pi4",
+ ":config_pi5",
+ ":config_roborio",
],
)
+[
+ aos_config(
+ name = "config_" + pi,
+ src = "y2022_" + pi + ".json",
+ flatbuffers = [
+ "//aos/network:message_bridge_client_fbs",
+ "//aos/network:message_bridge_server_fbs",
+ "//aos/network:timestamp_fbs",
+ "//aos/network:remote_message_fbs",
+ "//frc971/vision:vision_fbs",
+ "//y2022/vision:target_estimate_fbs",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//visibility:public"],
+ deps = [
+ "//aos/events:config",
+ "//frc971/control_loops/drivetrain:config",
+ "//frc971/input:config",
+ ],
+ )
+ for pi in [
+ "pi1",
+ "pi2",
+ "pi3",
+ "pi4",
+ "pi5",
+ ]
+]
+
+aos_config(
+ name = "config_logger",
+ src = "y2022_logger.json",
+ flatbuffers = [
+ "//aos/network:message_bridge_client_fbs",
+ "//aos/network:message_bridge_server_fbs",
+ "//aos/network:timestamp_fbs",
+ "//aos/network:remote_message_fbs",
+ "//frc971/vision:vision_fbs",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//visibility:public"],
+ deps = [
+ "//aos/events:config",
+ "//frc971/control_loops/drivetrain:config",
+ "//frc971/input:config",
+ ],
+)
+
+aos_config(
+ name = "config_roborio",
+ src = "y2022_roborio.json",
+ flatbuffers = [
+ "//aos/network:remote_message_fbs",
+ "//aos/network:message_bridge_client_fbs",
+ "//aos/network:message_bridge_server_fbs",
+ "//aos/network:timestamp_fbs",
+ "//y2019/control_loops/drivetrain:target_selector_fbs",
+ "//y2022/control_loops/superstructure:superstructure_goal_fbs",
+ "//y2022/control_loops/superstructure:superstructure_output_fbs",
+ "//y2022/control_loops/superstructure:superstructure_position_fbs",
+ "//y2022/control_loops/superstructure:superstructure_status_fbs",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [
+ "//aos/events:config",
+ "//frc971/autonomous:config",
+ "//frc971/control_loops/drivetrain:config",
+ "//frc971/input:config",
+ "//frc971/wpilib:config",
+ ],
+)
+
+[
+ jinja2_template(
+ name = "y2022_pi" + str(num) + ".json",
+ src = "y2022_pi_template.json",
+ parameters = {"NUM": str(num)},
+ target_compatible_with = ["@platforms//os:linux"],
+ )
+ for num in range(1, 6)
+]
+
cc_library(
name = "constants",
srcs = [
@@ -96,21 +229,3 @@
"//y2022/control_loops/superstructure:superstructure_status_fbs",
],
)
-
-aos_config(
- name = "config",
- src = "y2022.json",
- flatbuffers = [
- "//y2022/control_loops/superstructure:superstructure_goal_fbs",
- "//y2022/control_loops/superstructure:superstructure_output_fbs",
- "//y2022/control_loops/superstructure:superstructure_position_fbs",
- "//y2022/control_loops/superstructure:superstructure_status_fbs",
- ],
- visibility = ["//visibility:public"],
- deps = [
- "//frc971/autonomous:config",
- "//frc971/control_loops/drivetrain:config",
- "//frc971/input:config",
- "//frc971/wpilib:config",
- ],
-)
diff --git a/y2022/control_loops/superstructure/superstructure.cc b/y2022/control_loops/superstructure/superstructure.cc
index e985779..b2c89d1 100644
--- a/y2022/control_loops/superstructure/superstructure.cc
+++ b/y2022/control_loops/superstructure/superstructure.cc
@@ -26,7 +26,7 @@
if (output != nullptr && unsafe_goal != nullptr) {
OutputT output_struct;
-
+ output_struct.climber_voltage = unsafe_goal->climber_speed();
output->CheckOk(output->Send(Output::Pack(*output->fbb(), &output_struct)));
}
@@ -36,8 +36,8 @@
status_builder.add_estopped(false);
if (unsafe_goal != nullptr) {
+ status_builder.add_climber_speed(unsafe_goal->climber_speed());
}
-
(void)status->Send(status_builder.Finish());
}
diff --git a/y2022/control_loops/superstructure/superstructure_goal.fbs b/y2022/control_loops/superstructure/superstructure_goal.fbs
index 439c0fb..3e0679e 100644
--- a/y2022/control_loops/superstructure/superstructure_goal.fbs
+++ b/y2022/control_loops/superstructure/superstructure_goal.fbs
@@ -3,7 +3,9 @@
namespace y2022.control_loops.superstructure;
table Goal {
-
+ // Voltage of the climber falcon
+ // - is down + is up
+ climber_speed:double (id: 0);
}
root_type Goal;
diff --git a/y2022/control_loops/superstructure/superstructure_output.fbs b/y2022/control_loops/superstructure/superstructure_output.fbs
index e95fbe3..78b2c01 100644
--- a/y2022/control_loops/superstructure/superstructure_output.fbs
+++ b/y2022/control_loops/superstructure/superstructure_output.fbs
@@ -1,7 +1,9 @@
namespace y2022.control_loops.superstructure;
table Output {
-
+ // Voltage of the climber falcon
+ // - is down + is up
+ climber_voltage:double (id: 0);
}
root_type Output;
diff --git a/y2022/control_loops/superstructure/superstructure_status.fbs b/y2022/control_loops/superstructure/superstructure_status.fbs
index deff2f6..5f8cdc3 100644
--- a/y2022/control_loops/superstructure/superstructure_status.fbs
+++ b/y2022/control_loops/superstructure/superstructure_status.fbs
@@ -9,6 +9,10 @@
// If true, we have aborted. This is the or of all subsystem estops.
estopped:bool (id: 1);
+
+ // Goal voltage of the climber falcon
+ // - is down + is up
+ climber_speed:double (id: 2);
}
root_type Status;
\ No newline at end of file
diff --git a/y2022/vision/BUILD b/y2022/vision/BUILD
index e69de29..0105796 100644
--- a/y2022/vision/BUILD
+++ b/y2022/vision/BUILD
@@ -0,0 +1,105 @@
+load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
+
+cc_binary(
+ name = "camera_reader",
+ srcs = [
+ "camera_reader_main.cc",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//y2022:__subpackages__"],
+ deps = [
+ ":camera_reader_lib",
+ "//aos:init",
+ "//aos/events:shm_event_loop",
+ ],
+)
+
+cc_library(
+ name = "camera_reader_lib",
+ srcs = [
+ "camera_reader.cc",
+ ],
+ hdrs = [
+ "camera_reader.h",
+ ],
+ data = [
+ "//y2022:config",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//y2022:__subpackages__"],
+ deps = [
+ ":blob_detector_lib",
+ ":target_estimator_lib",
+ "//aos:flatbuffer_merge",
+ "//aos/events:event_loop",
+ "//aos/events:shm_event_loop",
+ "//aos/network:team_number",
+ "//frc971/vision:v4l2_reader",
+ "//frc971/vision:vision_fbs",
+ "//third_party:opencv",
+ "//y2020/vision/sift:sift_fbs",
+ "//y2020/vision/sift:sift_training_fbs",
+ "//y2020/vision/tools/python_code:sift_training_data",
+ ],
+)
+
+cc_library(
+ name = "blob_detector_lib",
+ srcs = [
+ "blob_detector.cc",
+ ],
+ hdrs = [
+ "blob_detector.h",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//y2022:__subpackages__"],
+ deps = [
+ "//aos/network:team_number",
+ "//aos/time",
+ "//third_party:opencv",
+ ],
+)
+
+cc_library(
+ name = "target_estimator_lib",
+ srcs = [
+ "target_estimator.cc",
+ ],
+ hdrs = [
+ "target_estimator.h",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//y2022:__subpackages__"],
+ deps = [
+ ":target_estimate_fbs",
+ "//third_party:opencv",
+ ],
+)
+
+flatbuffer_cc_library(
+ name = "target_estimate_fbs",
+ srcs = ["target_estimate.fbs"],
+ gen_reflections = 1,
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//y2022:__subpackages__"],
+)
+
+cc_binary(
+ name = "viewer",
+ srcs = [
+ "viewer.cc",
+ ],
+ data = [
+ "//y2022:config",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//y2022:__subpackages__"],
+ deps = [
+ ":blob_detector_lib",
+ ":target_estimator_lib",
+ "//aos:init",
+ "//aos/events:shm_event_loop",
+ "//frc971/vision:vision_fbs",
+ "//third_party:opencv",
+ ],
+)
diff --git a/y2022/vision/blob_detector.cc b/y2022/vision/blob_detector.cc
new file mode 100644
index 0000000..8fc70f6
--- /dev/null
+++ b/y2022/vision/blob_detector.cc
@@ -0,0 +1,313 @@
+#include "y2022/vision/blob_detector.h"
+
+#include <cmath>
+#include <optional>
+#include <string>
+
+#include "aos/network/team_number.h"
+#include "aos/time/time.h"
+#include "opencv2/features2d.hpp"
+#include "opencv2/imgproc.hpp"
+
+DEFINE_uint64(green_delta, 50,
+ "Required difference between green pixels vs. red and blue");
+DEFINE_bool(use_outdoors, false,
+ "If true, change thresholds to handle outdoor illumination");
+
+namespace y2022 {
+namespace vision {
+
+cv::Mat BlobDetector::ThresholdImage(cv::Mat rgb_image) {
+ cv::Mat binarized_image(cv::Size(rgb_image.cols, rgb_image.rows), CV_8UC1);
+ for (int row = 0; row < rgb_image.rows; row++) {
+ for (int col = 0; col < rgb_image.cols; col++) {
+ cv::Vec3b pixel = rgb_image.at<cv::Vec3b>(row, col);
+ uint8_t blue = pixel.val[0];
+ uint8_t green = pixel.val[1];
+ uint8_t red = pixel.val[2];
+ // Simple filter that looks for green pixels sufficiently brigher than
+ // red and blue
+ if ((green > blue + FLAGS_green_delta) &&
+ (green > red + FLAGS_green_delta)) {
+ binarized_image.at<uint8_t>(row, col) = 255;
+ } else {
+ binarized_image.at<uint8_t>(row, col) = 0;
+ }
+ }
+ }
+
+ return binarized_image;
+}
+
+std::vector<std::vector<cv::Point>> BlobDetector::FindBlobs(
+ cv::Mat binarized_image) {
+ // find the contours (blob outlines)
+ std::vector<std::vector<cv::Point>> contours;
+ std::vector<cv::Vec4i> hierarchy;
+ cv::findContours(binarized_image, contours, hierarchy, cv::RETR_CCOMP,
+ cv::CHAIN_APPROX_SIMPLE);
+
+ return contours;
+}
+
+std::vector<BlobDetector::BlobStats> BlobDetector::ComputeStats(
+ std::vector<std::vector<cv::Point>> blobs) {
+ std::vector<BlobDetector::BlobStats> blob_stats;
+ for (auto blob : blobs) {
+ // Make the blob convex before finding bounding box
+ std::vector<cv::Point> convex_blob;
+ cv::convexHull(blob, convex_blob);
+ auto blob_size = cv::boundingRect(convex_blob).size();
+ cv::Moments moments = cv::moments(convex_blob);
+
+ const auto centroid =
+ cv::Point(moments.m10 / moments.m00, moments.m01 / moments.m00);
+ const double aspect_ratio =
+ static_cast<double>(blob_size.width) / blob_size.height;
+ const double area = moments.m00;
+ const size_t points = blob.size();
+
+ blob_stats.emplace_back(BlobStats{centroid, aspect_ratio, area, points});
+ }
+ return blob_stats;
+}
+
+namespace {
+
+// Linear equation in the form ax + by = c
+struct Line {
+ public:
+ double a, b, c;
+
+ std::optional<cv::Point2d> Intersection(const Line &l) const {
+ // Use Cramer's rule to solve for the intersection
+ const double denominator = Determinant(a, b, l.a, l.b);
+ const double numerator_x = Determinant(c, b, l.c, l.b);
+ const double numerator_y = Determinant(a, c, l.a, l.c);
+
+ std::optional<cv::Point2d> intersection = std::nullopt;
+ // Return nullopt if the denominator is 0, meaning the same slopes
+ if (denominator != 0) {
+ intersection =
+ cv::Point2d(numerator_x / denominator, numerator_y / denominator);
+ }
+
+ return intersection;
+ }
+
+ private: // Determinant of [[a, b], [c, d]]
+ static double Determinant(double a, double b, double c, double d) {
+ return (a * d) - (b * c);
+ }
+};
+
+struct Circle {
+ public:
+ cv::Point2d center;
+ double radius;
+
+ static std::optional<Circle> Fit(std::vector<cv::Point2d> centroids) {
+ CHECK_EQ(centroids.size(), 3ul);
+ // For the 3 points, we have 3 equations in the form
+ // (x - h)^2 + (y - k)^2 = r^2
+ // Manipulate them to solve for the center and radius
+ // (x1 - h)^2 + (y1 - k)^2 = r^2 ->
+ // x1^2 + h^2 - 2x1h + y1^2 + k^2 - 2y1k = r^2
+ // Also, (x2 - h)^2 + (y2 - k)^2 = r^2
+ // Subtracting these two, we get
+ // x1^2 - x2^2 - 2h(x1 - x2) + y1^2 - y2^2 - 2k(y1 - y2) = 0 ->
+ // h(x1 - x2) + k(y1 - y2) = (-x1^2 + x2^2 - y1^2 + y2^2) / -2
+ // Doing the same with equations 1 and 3, we get the second linear equation
+ // h(x1 - x3) + k(y1 - y3) = (-x1^2 + x3^2 - y1^2 + y3^2) / -2
+ // Now, we can solve for their intersection and find the center
+ const auto l =
+ Line{centroids[0].x - centroids[1].x, centroids[0].y - centroids[1].y,
+ (-std::pow(centroids[0].x, 2) + std::pow(centroids[1].x, 2) -
+ std::pow(centroids[0].y, 2) + std::pow(centroids[1].y, 2)) /
+ -2.0};
+ const auto m =
+ Line{centroids[0].x - centroids[2].x, centroids[0].y - centroids[2].y,
+ (-std::pow(centroids[0].x, 2) + std::pow(centroids[2].x, 2) -
+ std::pow(centroids[0].y, 2) + std::pow(centroids[2].y, 2)) /
+ -2.0};
+ const auto center = l.Intersection(m);
+
+ std::optional<Circle> circle = std::nullopt;
+ if (center) {
+ // Now find the radius
+ const double radius = cv::norm(centroids[0] - *center);
+ circle = Circle{*center, radius};
+ }
+ return circle;
+ }
+
+ double DistanceTo(cv::Point2d p) const {
+ // Translate the point so that the circle orgin can be (0, 0)
+ const auto p_prime = cv::Point2d(p.y - center.y, p.x - center.x);
+ // Now, the distance is simply the difference between distance from the
+ // origin to p' and the radius.
+ return std::abs(cv::norm(p_prime) - radius);
+ }
+
+ // Inverted because y-coordinates go backwards
+ bool OnTopHalf(cv::Point2d p) const { return p.y <= center.y; }
+};
+
+} // namespace
+
+std::pair<std::vector<std::vector<cv::Point>>, cv::Point>
+BlobDetector::FilterBlobs(std::vector<std::vector<cv::Point>> blobs,
+ std::vector<BlobDetector::BlobStats> blob_stats) {
+ std::vector<std::vector<cv::Point>> filtered_blobs;
+ std::vector<BlobStats> filtered_stats;
+
+ auto blob_it = blobs.begin();
+ auto stats_it = blob_stats.begin();
+ while (blob_it < blobs.end() && stats_it < blob_stats.end()) {
+ // To estimate the maximum y, we can figure out the y value of the blobs
+ // when the camera is the farthest from the target, at the field corner.
+ // We can solve for the pitch of the blob:
+ // blob_pitch = atan((height_tape - height_camera) / depth) + camera_pitch
+ // The triangle with the height of the tape above the camera and the camera
+ // depth is similar to the one with the focal length in y pixels and the y
+ // coordinate offset from the center of the image.
+ // Therefore y_offset = focal_length_y * tan(blob_pitch), and
+ // y = -(y_offset - offset_y)
+ constexpr int kMaxY = 400;
+ constexpr double kTapeAspectRatio = 5.0 / 2.0;
+ constexpr double kAspectRatioThreshold = 1.5;
+ constexpr double kMinArea = 10;
+ constexpr size_t kMinPoints = 6;
+
+ // Remove all blobs that are at the bottom of the image, have a different
+ // aspect ratio than the tape, or have too little area or points
+ // TODO(milind): modify to take into account that blobs will be on the side.
+ if ((stats_it->centroid.y <= kMaxY) &&
+ (std::abs(kTapeAspectRatio - stats_it->aspect_ratio) <
+ kAspectRatioThreshold) &&
+ (stats_it->area >= kMinArea) && (stats_it->points >= kMinPoints)) {
+ filtered_blobs.push_back(*blob_it);
+ filtered_stats.push_back(*stats_it);
+ }
+ blob_it++;
+ stats_it++;
+ }
+
+ // Threshold for mean distance from a blob centroid to a circle.
+ constexpr double kCircleDistanceThreshold = 5.0;
+ std::vector<std::vector<cv::Point>> blob_circle;
+ std::vector<cv::Point2d> centroids;
+
+ // If we see more than this number of blobs after filtering based on
+ // color/size, the circle fit may detect noise so just return no blobs.
+ constexpr size_t kMaxFilteredBlobs = 50;
+ if (filtered_blobs.size() > 0 && filtered_blobs.size() <= kMaxFilteredBlobs) {
+ constexpr size_t kRansacIterations = 15;
+ for (size_t i = 0; i < kRansacIterations; i++) {
+ // Pick 3 random blobs and see how many fit on their circle
+ const size_t j = std::rand() % filtered_blobs.size();
+ const size_t k = std::rand() % filtered_blobs.size();
+ const size_t l = std::rand() % filtered_blobs.size();
+
+ // Restart if the random indices clash
+ if ((j == k) || (j == l) || (k == l)) {
+ i--;
+ continue;
+ }
+
+ std::vector<std::vector<cv::Point>> current_blobs{
+ filtered_blobs[j], filtered_blobs[k], filtered_blobs[l]};
+ std::vector<cv::Point2d> current_centroids{filtered_stats[j].centroid,
+ filtered_stats[k].centroid,
+ filtered_stats[l].centroid};
+ const std::optional<Circle> circle = Circle::Fit(current_centroids);
+
+ // Make sure that a circle could be created from the points
+ if (!circle) {
+ continue;
+ }
+
+ // Only try to fit points to this circle if all of these are on the top
+ // half, like how the blobs should be
+ if (circle->OnTopHalf(current_centroids[0]) &&
+ circle->OnTopHalf(current_centroids[1]) &&
+ circle->OnTopHalf(current_centroids[2])) {
+ for (size_t m = 0; m < filtered_blobs.size(); m++) {
+ // Add this blob to the list if it is close to the circle, is on the
+ // top half, and isn't one of the other blobs
+ if ((m != i) && (m != j) && (m != k) &&
+ circle->OnTopHalf(filtered_stats[m].centroid) &&
+ (circle->DistanceTo(filtered_stats[m].centroid) <
+ kCircleDistanceThreshold)) {
+ current_blobs.emplace_back(filtered_blobs[m]);
+ current_centroids.emplace_back(filtered_stats[m].centroid);
+ }
+ }
+
+ if (current_blobs.size() > blob_circle.size()) {
+ blob_circle = current_blobs;
+ centroids = current_centroids;
+ }
+ }
+ }
+ }
+
+ cv::Point avg_centroid(-1, -1);
+ if (centroids.size() > 0) {
+ for (auto centroid : centroids) {
+ avg_centroid.x += centroid.x;
+ avg_centroid.y += centroid.y;
+ }
+ avg_centroid.x /= centroids.size();
+ avg_centroid.y /= centroids.size();
+ }
+
+ return {blob_circle, avg_centroid};
+}
+
+void BlobDetector::DrawBlobs(
+ cv::Mat view_image,
+ const std::vector<std::vector<cv::Point>> &unfiltered_blobs,
+ const std::vector<std::vector<cv::Point>> &filtered_blobs,
+ const std::vector<BlobStats> &blob_stats, cv::Point centroid) {
+ CHECK_GT(view_image.cols, 0);
+ if (unfiltered_blobs.size() > 0) {
+ // Draw blobs unfilled, with red color border
+ cv::drawContours(view_image, unfiltered_blobs, -1, cv::Scalar(0, 0, 255),
+ 0);
+ }
+
+ cv::drawContours(view_image, filtered_blobs, -1, cv::Scalar(0, 255, 0),
+ cv::FILLED);
+
+ // Draw blob centroids
+ for (auto stats : blob_stats) {
+ cv::circle(view_image, stats.centroid, 2, cv::Scalar(255, 0, 0),
+ cv::FILLED);
+ }
+
+ // Draw average centroid
+ cv::circle(view_image, centroid, 3, cv::Scalar(255, 255, 0), cv::FILLED);
+}
+
+void BlobDetector::ExtractBlobs(
+ cv::Mat rgb_image, cv::Mat binarized_image, cv::Mat blob_image,
+ std::vector<std::vector<cv::Point>> &filtered_blobs,
+ std::vector<std::vector<cv::Point>> &unfiltered_blobs,
+ std::vector<BlobStats> &blob_stats, cv::Point ¢roid) {
+ auto start = aos::monotonic_clock::now();
+ binarized_image = ThresholdImage(rgb_image);
+ unfiltered_blobs = FindBlobs(binarized_image);
+ blob_stats = ComputeStats(unfiltered_blobs);
+ auto filtered_pair = FilterBlobs(unfiltered_blobs, blob_stats);
+ filtered_blobs = filtered_pair.first;
+ centroid = filtered_pair.second;
+ auto end = aos::monotonic_clock::now();
+ LOG(INFO) << "Blob detection elapsed time: "
+ << std::chrono::duration<double, std::milli>(end - start).count()
+ << " ms";
+ DrawBlobs(blob_image, unfiltered_blobs, filtered_blobs, blob_stats, centroid);
+}
+
+} // namespace vision
+} // namespace y2022
diff --git a/y2022/vision/blob_detector.h b/y2022/vision/blob_detector.h
new file mode 100644
index 0000000..f95b217
--- /dev/null
+++ b/y2022/vision/blob_detector.h
@@ -0,0 +1,56 @@
+#ifndef Y2022_BLOB_DETECTOR_H_
+#define Y2022_BLOB_DETECTOR_H_
+
+#include <opencv2/features2d.hpp>
+#include <opencv2/imgproc.hpp>
+
+namespace y2022 {
+namespace vision {
+
+class BlobDetector {
+ public:
+ struct BlobStats {
+ cv::Point centroid;
+ double aspect_ratio;
+ double area;
+ size_t points;
+ };
+
+ BlobDetector() {}
+ // Given an image, threshold it to find "green" pixels
+ // Input: Color image
+ // Output: Grayscale (binarized) image with green pixels set to 255
+ static cv::Mat ThresholdImage(cv::Mat rgb_image);
+
+ // Given binary image, extract blobs
+ static std::vector<std::vector<cv::Point>> FindBlobs(cv::Mat threshold_image);
+
+ // Extract stats for each blob
+ static std::vector<BlobStats> ComputeStats(
+ std::vector<std::vector<cv::Point>> blobs);
+
+ // Filter blobs to get rid of noise, too small/large items, and blobs that
+ // aren't in a circle. Returns a pair of filtered blobs and the average
+ // of their centroids.
+ static std::pair<std::vector<std::vector<cv::Point>>, cv::Point> FilterBlobs(
+ std::vector<std::vector<cv::Point>> blobs,
+ std::vector<BlobStats> blob_stats);
+
+ // Draw Blobs on image
+ // Optionally draw all blobs and filtered blobs
+ static void DrawBlobs(
+ cv::Mat view_image,
+ const std::vector<std::vector<cv::Point>> &filtered_blobs,
+ const std::vector<std::vector<cv::Point>> &unfiltered_blobs,
+ const std::vector<BlobStats> &blob_stats, cv::Point centroid);
+
+ static void ExtractBlobs(
+ cv::Mat rgb_image, cv::Mat binarized_image, cv::Mat blob_image,
+ std::vector<std::vector<cv::Point>> &filtered_blobs,
+ std::vector<std::vector<cv::Point>> &unfiltered_blobs,
+ std::vector<BlobStats> &blob_stats, cv::Point ¢roid);
+};
+} // namespace vision
+} // namespace y2022
+
+#endif // Y2022_BLOB_DETECTOR_H_
diff --git a/y2022/vision/camera_reader.cc b/y2022/vision/camera_reader.cc
new file mode 100644
index 0000000..4ac6aad
--- /dev/null
+++ b/y2022/vision/camera_reader.cc
@@ -0,0 +1,103 @@
+#include "y2022/vision/camera_reader.h"
+
+#include <math.h>
+
+#include <opencv2/imgproc.hpp>
+
+#include "aos/events/event_loop.h"
+#include "aos/events/shm_event_loop.h"
+#include "aos/flatbuffer_merge.h"
+#include "aos/network/team_number.h"
+#include "frc971/vision/v4l2_reader.h"
+#include "frc971/vision/vision_generated.h"
+#include "y2020/vision/sift/sift_generated.h"
+#include "y2020/vision/sift/sift_training_generated.h"
+#include "y2020/vision/tools/python_code/sift_training_data.h"
+#include "y2022/vision/blob_detector.h"
+#include "y2022/vision/target_estimator.h"
+
+DEFINE_string(image_png, "", "A set of PNG images");
+
+namespace y2022 {
+namespace vision {
+
+using namespace frc971::vision;
+
+const sift::CameraCalibration *CameraReader::FindCameraCalibration() const {
+ const std::string_view node_name = event_loop_->node()->name()->string_view();
+ const int team_number = aos::network::GetTeamNumber();
+ for (const sift::CameraCalibration *candidate :
+ *training_data_->camera_calibrations()) {
+ if (candidate->node_name()->string_view() != node_name) {
+ continue;
+ }
+ if (candidate->team_number() != team_number) {
+ continue;
+ }
+ return candidate;
+ }
+ LOG(FATAL) << ": Failed to find camera calibration for " << node_name
+ << " on " << team_number;
+}
+
+void CameraReader::ProcessImage(const cv::Mat &image_mat) {
+ // Remember, we're getting YUYV images, so we start by converting to RGB
+
+ // TOOD: Need to code this up for blob detection
+
+ std::vector<std::vector<cv::Point>> filtered_blobs, unfiltered_blobs;
+ std::vector<BlobDetector::BlobStats> blob_stats;
+ cv::Mat binarized_image =
+ cv::Mat::zeros(cv::Size(image_mat.cols, image_mat.rows), CV_8UC1);
+ cv::Mat ret_image =
+ cv::Mat::zeros(cv::Size(image_mat.cols, image_mat.rows), CV_8UC3);
+ cv::Point centroid;
+ BlobDetector::ExtractBlobs(image_mat, binarized_image, ret_image,
+ filtered_blobs, unfiltered_blobs, blob_stats,
+ centroid);
+ TargetEstimateT target = TargetEstimator::EstimateTargetLocation(
+ centroid, CameraIntrinsics(), CameraExtrinsics());
+
+ auto builder = target_estimate_sender_.MakeBuilder();
+ builder.CheckOk(builder.Send(TargetEstimate::Pack(*builder.fbb(), &target)));
+}
+
+void CameraReader::ReadImage() {
+ // Path is for reading from the Disk.
+ if (FLAGS_image_png != "") {
+ std::vector<cv::String> file_list;
+ cv::glob(FLAGS_image_png + "/*.png", file_list, false);
+
+ for (auto file : file_list) {
+ LOG(INFO) << "Reading file " << file;
+ cv::Mat rgb_image = cv::imread(file.c_str());
+ ProcessImage(rgb_image);
+ }
+ event_loop_->Exit();
+ return;
+ }
+ // If we are not reading from the disk, we read the live camera stream.
+ if (!reader_->ReadLatestImage()) {
+ read_image_timer_->Setup(event_loop_->monotonic_now() +
+ std::chrono::milliseconds(10));
+ return;
+ }
+
+ const CameraImage &image = reader_->LatestImage();
+ cv::Mat image_mat(image.rows(), image.cols(), CV_8U);
+ CHECK(image_mat.isContinuous());
+
+ const int number_pixels = image.rows() * image.cols();
+ for (int i = 0; i < number_pixels; ++i) {
+ reinterpret_cast<uint8_t *>(image_mat.data)[i] =
+ image.data()->data()[i * 2];
+ }
+
+ ProcessImage(image_mat);
+
+ reader_->SendLatestImage();
+ read_image_timer_->Setup(event_loop_->monotonic_now());
+}
+
+} // namespace vision
+} // namespace y2022
diff --git a/y2022/vision/camera_reader.h b/y2022/vision/camera_reader.h
new file mode 100644
index 0000000..78abaa5
--- /dev/null
+++ b/y2022/vision/camera_reader.h
@@ -0,0 +1,93 @@
+#ifndef Y2022_VISION_CAMERA_READER_H_
+#define Y2022_VISION_CAMERA_READER_H_
+
+#include <math.h>
+
+#include <opencv2/calib3d.hpp>
+#include <opencv2/features2d.hpp>
+#include <opencv2/imgcodecs.hpp>
+#include <opencv2/imgproc.hpp>
+
+#include "aos/events/shm_event_loop.h"
+#include "aos/flatbuffer_merge.h"
+#include "aos/network/team_number.h"
+#include "frc971/vision/v4l2_reader.h"
+#include "frc971/vision/vision_generated.h"
+#include "y2020/vision/sift/sift_generated.h"
+#include "y2020/vision/sift/sift_training_generated.h"
+#include "y2020/vision/tools/python_code/sift_training_data.h"
+#include "y2022/vision/target_estimate_generated.h"
+
+namespace y2022 {
+namespace vision {
+
+using namespace frc971::vision;
+
+// TODO<Jim/Milind>: Need to add in senders to send out the blob data/stats
+
+class CameraReader {
+ public:
+ CameraReader(aos::ShmEventLoop *event_loop,
+ const sift::TrainingData *training_data, V4L2Reader *reader)
+ : event_loop_(event_loop),
+ training_data_(training_data),
+ camera_calibration_(FindCameraCalibration()),
+ reader_(reader),
+ image_sender_(event_loop->MakeSender<CameraImage>("/camera")),
+ target_estimate_sender_(
+ event_loop->MakeSender<TargetEstimate>("/camera")),
+ read_image_timer_(event_loop->AddTimer([this]() { ReadImage(); })) {
+ event_loop->OnRun(
+ [this]() { read_image_timer_->Setup(event_loop_->monotonic_now()); });
+ }
+
+ private:
+ const sift::CameraCalibration *FindCameraCalibration() const;
+
+ // Processes an image (including sending the results).
+ void ProcessImage(const cv::Mat &image);
+
+ // Reads an image, and then performs all of our processing on it.
+ void ReadImage();
+
+ cv::Mat CameraIntrinsics() const {
+ const cv::Mat result(3, 3, CV_32F,
+ const_cast<void *>(static_cast<const void *>(
+ camera_calibration_->intrinsics()->data())));
+ CHECK_EQ(result.total(), camera_calibration_->intrinsics()->size());
+ return result;
+ }
+
+ cv::Mat CameraExtrinsics() const {
+ const cv::Mat result(
+ 4, 4, CV_32F,
+ const_cast<void *>(static_cast<const void *>(
+ camera_calibration_->fixed_extrinsics()->data()->data())));
+ CHECK_EQ(result.total(),
+ camera_calibration_->fixed_extrinsics()->data()->size());
+ return result;
+ }
+
+ cv::Mat CameraDistCoeffs() const {
+ const cv::Mat result(5, 1, CV_32F,
+ const_cast<void *>(static_cast<const void *>(
+ camera_calibration_->dist_coeffs()->data())));
+ CHECK_EQ(result.total(), camera_calibration_->dist_coeffs()->size());
+ return result;
+ }
+
+ aos::ShmEventLoop *const event_loop_;
+ const sift::TrainingData *const training_data_;
+ const sift::CameraCalibration *const camera_calibration_;
+ V4L2Reader *const reader_;
+ aos::Sender<CameraImage> image_sender_;
+ aos::Sender<TargetEstimate> target_estimate_sender_;
+
+ // We schedule this immediately to read an image. Having it on a timer
+ // means other things can run on the event loop in between.
+ aos::TimerHandler *const read_image_timer_;
+};
+
+} // namespace vision
+} // namespace y2022
+#endif // Y2022_VISION_CAMERA_READER_H_
diff --git a/y2022/vision/camera_reader_main.cc b/y2022/vision/camera_reader_main.cc
new file mode 100644
index 0000000..6f65a6d
--- /dev/null
+++ b/y2022/vision/camera_reader_main.cc
@@ -0,0 +1,51 @@
+#include "aos/events/shm_event_loop.h"
+#include "aos/init.h"
+#include "y2022/vision/camera_reader.h"
+
+// config used to allow running camera_reader independently. E.g.,
+// bazel run //y2022/vision:camera_reader -- --config y2022/config.json
+// --override_hostname pi-7971-1 --ignore_timestamps true
+DEFINE_string(config, "config.json", "Path to the config file to use.");
+DEFINE_uint32(exposure, 5, "Exposure time, in 100us increments");
+
+namespace y2022 {
+namespace vision {
+namespace {
+
+using namespace frc971::vision;
+
+void CameraReaderMain() {
+ aos::FlatbufferDetachedBuffer<aos::Configuration> config =
+ aos::configuration::ReadConfig(FLAGS_config);
+
+ const aos::FlatbufferSpan<sift::TrainingData> training_data(
+ SiftTrainingData());
+ CHECK(training_data.Verify());
+
+ aos::ShmEventLoop event_loop(&config.message());
+
+ // First, log the data for future reference.
+ {
+ aos::Sender<sift::TrainingData> training_data_sender =
+ event_loop.MakeSender<sift::TrainingData>("/camera");
+ CHECK_EQ(training_data_sender.Send(training_data),
+ aos::RawSender::Error::kOk);
+ }
+
+ V4L2Reader v4l2_reader(&event_loop, "/dev/video0");
+ v4l2_reader.SetExposure(FLAGS_exposure);
+
+ CameraReader camera_reader(&event_loop, &training_data.message(),
+ &v4l2_reader);
+
+ event_loop.Run();
+}
+
+} // namespace
+} // namespace vision
+} // namespace y2022
+
+int main(int argc, char **argv) {
+ aos::InitGoogle(&argc, &argv);
+ y2022::vision::CameraReaderMain();
+}
diff --git a/y2022/vision/target_estimate.fbs b/y2022/vision/target_estimate.fbs
new file mode 100644
index 0000000..e22654a
--- /dev/null
+++ b/y2022/vision/target_estimate.fbs
@@ -0,0 +1,14 @@
+namespace y2022.vision;
+
+// Contains the information the EKF wants from blobs from a single image.
+table TargetEstimate {
+ // Horizontal distance from the camera to the center of the upper hub
+ distance:double (id: 0);
+ // Angle from the camera to the target (horizontal angle in rad).
+ // Positive means right of center, negative means left.
+ angle_to_target:double (id: 1);
+
+ // TODO(milind): add confidence and blob stats
+}
+
+root_type TargetEstimate;
diff --git a/y2022/vision/target_estimator.cc b/y2022/vision/target_estimator.cc
new file mode 100644
index 0000000..c51eb08
--- /dev/null
+++ b/y2022/vision/target_estimator.cc
@@ -0,0 +1,31 @@
+#include "y2022/vision/target_estimator.h"
+
+namespace y2022::vision {
+
+TargetEstimateT TargetEstimator::EstimateTargetLocation(
+ cv::Point2i blob_point, const cv::Mat &intrinsics,
+ const cv::Mat &extrinsics) {
+ const cv::Point2d focal_length(intrinsics.at<double>(0, 0),
+ intrinsics.at<double>(1, 1));
+ const cv::Point2d offset(intrinsics.at<double>(0, 2),
+ intrinsics.at<double>(1, 2));
+
+ // Blob pitch in camera reference frame
+ const double blob_pitch =
+ std::atan(static_cast<double>(-(blob_point.y - offset.y)) /
+ static_cast<double>(focal_length.y));
+ const double camera_height = extrinsics.at<double>(2, 3);
+ // Depth from camera to blob
+ const double depth = (kTapeHeight - camera_height) / std::tan(blob_pitch);
+
+ TargetEstimateT target;
+ target.angle_to_target =
+ std::atan2(static_cast<double>(blob_point.x - offset.x),
+ static_cast<double>(focal_length.x));
+ target.distance =
+ (depth / std::cos(target.angle_to_target)) + kUpperHubRadius;
+
+ return target;
+}
+
+} // namespace y2022::vision
diff --git a/y2022/vision/target_estimator.h b/y2022/vision/target_estimator.h
new file mode 100644
index 0000000..4988c3c
--- /dev/null
+++ b/y2022/vision/target_estimator.h
@@ -0,0 +1,26 @@
+#ifndef Y2022_VISION_POSE_ESTIMATOR_H_
+#define Y2022_VISION_POSE_ESTIMATOR_H_
+
+#include "opencv2/imgproc.hpp"
+#include "y2022/vision/target_estimate_generated.h"
+
+namespace y2022::vision {
+
+class TargetEstimator {
+ public:
+ // Computes the location of the target.
+ // blob_point is the mean (x, y) of blob pixels.
+ static TargetEstimateT EstimateTargetLocation(cv::Point2i blob_point,
+ const cv::Mat &intrinsics,
+ const cv::Mat &extrinsics);
+
+ private:
+ // Height of the center of the tape (m)
+ static constexpr double kTapeHeight = 2.58 + (0.05 / 2);
+ // Horizontal distance from tape to center of hub (m)
+ static constexpr double kUpperHubRadius = 1.22 / 2;
+};
+
+} // namespace y2022::vision
+
+#endif // Y2022_VISION_POSE_ESTIMATOR_H_
diff --git a/y2022/vision/viewer.cc b/y2022/vision/viewer.cc
new file mode 100644
index 0000000..202b6a0
--- /dev/null
+++ b/y2022/vision/viewer.cc
@@ -0,0 +1,144 @@
+#include <map>
+#include <opencv2/calib3d.hpp>
+#include <opencv2/features2d.hpp>
+#include <opencv2/highgui/highgui.hpp>
+#include <opencv2/imgproc.hpp>
+#include <random>
+
+#include "aos/events/shm_event_loop.h"
+#include "aos/init.h"
+#include "aos/time/time.h"
+#include "frc971/vision/vision_generated.h"
+#include "y2022/vision/blob_detector.h"
+#include "y2022/vision/target_estimator.h"
+
+DEFINE_string(capture, "",
+ "If set, capture a single image and save it to this filename.");
+DEFINE_string(channel, "/camera", "Channel name for the image.");
+DEFINE_string(config, "config.json", "Path to the config file to use.");
+DEFINE_string(png_dir, "LED_Ring_exp", "Path to a set of images to display.");
+DEFINE_bool(show_features, true, "Show the blobs.");
+
+namespace y2022 {
+namespace vision {
+namespace {
+
+aos::Fetcher<frc971::vision::CameraImage> image_fetcher;
+
+bool DisplayLoop() {
+ int64_t image_timestamp = 0;
+ const frc971::vision::CameraImage *image;
+ // Read next image
+ if (!image_fetcher.FetchNext()) {
+ VLOG(2) << "Couldn't fetch next image";
+ return true;
+ }
+
+ image = image_fetcher.get();
+ CHECK(image != nullptr) << "Couldn't read image";
+ image_timestamp = image->monotonic_timestamp_ns();
+ VLOG(2) << "Got image at timestamp: " << image_timestamp;
+
+ // Create color image:
+ cv::Mat image_color_mat(cv::Size(image->cols(), image->rows()), CV_8UC2,
+ (void *)image->data()->data());
+ cv::Mat rgb_image(cv::Size(image->cols(), image->rows()), CV_8UC3);
+ cv::cvtColor(image_color_mat, rgb_image, cv::COLOR_YUV2BGR_YUYV);
+
+ if (!FLAGS_capture.empty()) {
+ cv::imwrite(FLAGS_capture, rgb_image);
+ return false;
+ }
+
+ cv::Mat binarized_image, ret_image;
+ std::vector<std::vector<cv::Point>> unfiltered_blobs, filtered_blobs;
+ std::vector<BlobDetector::BlobStats> blob_stats;
+ cv::Point centroid;
+ BlobDetector::ExtractBlobs(rgb_image, binarized_image, ret_image,
+ filtered_blobs, unfiltered_blobs, blob_stats,
+ centroid);
+
+ LOG(INFO) << image->monotonic_timestamp_ns()
+ << ": # blobs: " << filtered_blobs.size();
+
+ cv::imshow("image", rgb_image);
+ cv::imshow("blobs", ret_image);
+
+ int keystroke = cv::waitKey(1);
+ if ((keystroke & 0xFF) == static_cast<int>('c')) {
+ // Convert again, to get clean image
+ cv::cvtColor(image_color_mat, rgb_image, cv::COLOR_YUV2BGR_YUYV);
+ std::stringstream name;
+ name << "capture-" << aos::realtime_clock::now() << ".png";
+ cv::imwrite(name.str(), rgb_image);
+ LOG(INFO) << "Saved image file: " << name.str();
+ } else if ((keystroke & 0xFF) == static_cast<int>('q')) {
+ return false;
+ }
+ return true;
+}
+
+void ViewerMain() {
+ aos::FlatbufferDetachedBuffer<aos::Configuration> config =
+ aos::configuration::ReadConfig(FLAGS_config);
+
+ aos::ShmEventLoop event_loop(&config.message());
+
+ image_fetcher =
+ event_loop.MakeFetcher<frc971::vision::CameraImage>(FLAGS_channel);
+
+ // Run the display loop
+ event_loop.AddPhasedLoop(
+ [&event_loop](int) {
+ if (!DisplayLoop()) {
+ LOG(INFO) << "Calling event_loop Exit";
+ event_loop.Exit();
+ };
+ },
+ ::std::chrono::milliseconds(100));
+
+ event_loop.Run();
+
+ image_fetcher = aos::Fetcher<frc971::vision::CameraImage>();
+}
+
+void ViewerLocal() {
+ std::vector<cv::String> file_list;
+ cv::glob(FLAGS_png_dir + "/*.png", file_list, false);
+ for (auto file : file_list) {
+ LOG(INFO) << "Reading file " << file;
+ cv::Mat rgb_image = cv::imread(file.c_str());
+ std::vector<std::vector<cv::Point>> filtered_blobs, unfiltered_blobs;
+ std::vector<BlobDetector::BlobStats> blob_stats;
+ cv::Mat binarized_image =
+ cv::Mat::zeros(cv::Size(rgb_image.cols, rgb_image.rows), CV_8UC1);
+ cv::Mat ret_image =
+ cv::Mat::zeros(cv::Size(rgb_image.cols, rgb_image.rows), CV_8UC3);
+ cv::Point centroid;
+ BlobDetector::ExtractBlobs(rgb_image, binarized_image, ret_image,
+ filtered_blobs, unfiltered_blobs, blob_stats,
+ centroid);
+
+ LOG(INFO) << ": # blobs: " << filtered_blobs.size() << " (# removed: "
+ << unfiltered_blobs.size() - filtered_blobs.size() << ")";
+ cv::imshow("image", rgb_image);
+ cv::imshow("blobs", ret_image);
+
+ int keystroke = cv::waitKey(0);
+ if ((keystroke & 0xFF) == static_cast<int>('q')) {
+ return;
+ }
+ }
+}
+} // namespace
+} // namespace vision
+} // namespace y2022
+
+// Quick and lightweight viewer for images
+int main(int argc, char **argv) {
+ aos::InitGoogle(&argc, &argv);
+ if (FLAGS_png_dir != "")
+ y2022::vision::ViewerLocal();
+ else
+ y2022::vision::ViewerMain();
+}
diff --git a/y2022/wpilib_interface.cc b/y2022/wpilib_interface.cc
index 5f43b70..0ee1e92 100644
--- a/y2022/wpilib_interface.cc
+++ b/y2022/wpilib_interface.cc
@@ -68,18 +68,6 @@
// DMA stuff and then removing the * 2.0 in *_translate.
// The low bit is direction.
-// TODO(brian): Use ::std::max instead once we have C++14 so that can be
-// constexpr.
-template <typename T>
-constexpr T max(T a, T b) {
- return (a > b) ? a : b;
-}
-
-template <typename T, typename... Rest>
-constexpr T max(T a, T b, T c, Rest... rest) {
- return max(max(a, b), c, rest...);
-}
-
double drivetrain_translate(int32_t in) {
return ((static_cast<double>(in) /
Values::kDrivetrainEncoderCountsPerRevolution()) *
@@ -193,17 +181,33 @@
: ::frc971::wpilib::LoopOutputHandler<superstructure::Output>(
event_loop, "/superstructure") {}
+ void set_climber_falcon(
+ ::std::unique_ptr<::ctre::phoenix::motorcontrol::can::TalonFX> t) {
+ climber_falcon_ = ::std::move(t);
+ climber_falcon_->ConfigSupplyCurrentLimit(
+ {true, Values::kClimberSupplyCurrentLimit(),
+ Values::kClimberSupplyCurrentLimit(), 0});
+ }
+
private:
- void WriteToFalcon(const double voltage,
- ::ctre::phoenix::motorcontrol::can::TalonFX *falcon) {
+ void WriteToFalconCan(const double voltage,
+ ::ctre::phoenix::motorcontrol::can::TalonFX *falcon) {
falcon->Set(
ctre::phoenix::motorcontrol::ControlMode::PercentOutput,
std::clamp(voltage, -kMaxBringupPower, kMaxBringupPower) / 12.0);
}
- void Write(const superstructure::Output & /* output */) override {}
+ void Write(const superstructure::Output &output) override {
+ WriteToFalconCan(output.climber_voltage(), climber_falcon_.get());
+ }
- void Stop() override { AOS_LOG(WARNING, "Superstructure output too old.\n"); }
+ void Stop() override {
+ AOS_LOG(WARNING, "Superstructure output too old.\n");
+ climber_falcon_->Set(ctre::phoenix::motorcontrol::ControlMode::Disabled, 0);
+ }
+
+ ::std::unique_ptr<::ctre::phoenix::motorcontrol::can::TalonFX>
+ climber_falcon_;
};
class WPILibRobot : public ::frc971::wpilib::WPILibRobotBase {
@@ -246,6 +250,9 @@
SuperstructureWriter superstructure_writer(&output_event_loop);
+ superstructure_writer.set_climber_falcon(
+ make_unique<::ctre::phoenix::motorcontrol::can::TalonFX>(0));
+
AddLoop(&output_event_loop);
RunLoops();
diff --git a/y2022/y2022.json b/y2022/y2022.json
index 4abbd5e..010c675 100644
--- a/y2022/y2022.json
+++ b/y2022/y2022.json
@@ -1,39 +1,23 @@
{
- "channels":
- [
+ "channel_storage_duration": 2000000000,
+ "maps": [
{
- "name": "/superstructure",
- "type": "y2022.control_loops.superstructure.Goal",
- "frequency": 200
- },
- {
- "name": "/superstructure",
- "type": "y2022.control_loops.superstructure.Status",
- "frequency": 200
- },
- {
- "name": "/superstructure",
- "type": "y2022.control_loops.superstructure.Output",
- "frequency": 200
- },
- {
- "name": "/superstructure",
- "type": "y2022.control_loops.superstructure.Position",
- "frequency": 200
- }
- ],
- "applications": [
- {
- "name": "drivetrain"
- },
- {
- "name": "superstructure"
+ "match": {
+ "name": "/aos",
+ "type": "aos.RobotState"
+ },
+ "rename": {
+ "name": "/roborio/aos"
+ }
}
],
"imports": [
- "../frc971/input/robot_state_config.json",
- "../frc971/control_loops/drivetrain/drivetrain_config.json",
- "../frc971/autonomous/autonomous_config.json",
- "../frc971/wpilib/wpilib_config.json"
+ "y2022_roborio.json",
+ "y2022_pi1.json",
+ "y2022_pi2.json",
+ "y2022_pi3.json",
+ "y2022_pi4.json",
+ "y2022_pi5.json",
+ "y2022_logger.json"
]
}
diff --git a/y2022/y2022_logger.json b/y2022/y2022_logger.json
new file mode 100644
index 0000000..1c71234
--- /dev/null
+++ b/y2022/y2022_logger.json
@@ -0,0 +1,483 @@
+{
+ "channels": [
+ {
+ "name": "/roborio/aos",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "roborio",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 1,
+ "time_to_live": 5000000,
+ "timestamp_logger" : "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes" : ["roborio"]
+ }
+ ]
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.IMUValuesBatch",
+ "source_node": "roborio",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 2,
+ "time_to_live": 500000000
+ }
+ ]
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.Position",
+ "source_node": "roborio",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 2,
+ "time_to_live": 500000000
+ }
+ ]
+ },
+ {
+ "name": "/pi1/aos",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "pi1",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 1,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi2/aos",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "pi2",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 1,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi3/aos",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "pi3",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 1,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi4/aos",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "pi4",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 1,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi5/aos",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "pi5",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 1,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/logger/aos",
+ "type": "aos.timing.Report",
+ "source_node": "logger",
+ "frequency": 50,
+ "num_senders": 20,
+ "max_size": 4096
+ },
+ {
+ "name": "/logger/aos",
+ "type": "aos.logging.LogMessageFbs",
+ "source_node": "logger",
+ "frequency": 400,
+ "num_senders": 20
+ },
+ {
+ "name": "/logger/aos",
+ "type": "aos.message_bridge.ServerStatistics",
+ "source_node": "logger",
+ "frequency": 10,
+ "num_senders": 2
+ },
+ {
+ "name": "/logger/aos",
+ "type": "aos.message_bridge.ClientStatistics",
+ "source_node": "logger",
+ "frequency": 10,
+ "max_size": 2000,
+ "num_senders": 2
+ },
+ {
+ "name": "/logger/aos",
+ "type": "aos.starter.Status",
+ "source_node": "logger",
+ "frequency": 50,
+ "num_senders": 20,
+ "destination_nodes": [
+ {
+ "name": "roborio",
+ "priority": 5,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "logger"
+ ],
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/logger/aos/remote_timestamps/roborio/logger/aos/aos-starter-Status",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "logger",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/logger/aos",
+ "type": "aos.starter.StarterRpc",
+ "source_node": "logger",
+ "frequency": 10,
+ "num_senders": 2,
+ "destination_nodes": [
+ {
+ "name": "roborio",
+ "priority": 5,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "logger"
+ ],
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/logger/aos/remote_timestamps/roborio/logger/aos/aos-starter-StarterRpc",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "logger",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/logger/aos",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "logger",
+ "frequency": 15,
+ "num_senders": 2,
+ "max_size": 400,
+ "destination_nodes": [
+ {
+ "name": "pi1",
+ "priority": 1,
+ "time_to_live": 5000000,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "logger"
+ ]
+ },
+ {
+ "name": "pi2",
+ "priority": 1,
+ "time_to_live": 5000000,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "logger"
+ ]
+ },
+ {
+ "name": "pi3",
+ "priority": 1,
+ "time_to_live": 5000000,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "logger"
+ ]
+ },
+ {
+ "name": "pi4",
+ "priority": 1,
+ "time_to_live": 5000000,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "logger"
+ ]
+ },
+ {
+ "name": "pi5",
+ "priority": 1,
+ "time_to_live": 5000000,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "logger"
+ ]
+ },
+ {
+ "name": "roborio",
+ "priority": 1,
+ "time_to_live": 5000000,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "logger"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "/logger/aos/remote_timestamps/roborio/logger/aos/aos-message_bridge-Timestamp",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "logger",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/logger/aos/remote_timestamps/pi1/logger/aos/aos-message_bridge-Timestamp",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "logger",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/logger/aos/remote_timestamps/pi2/logger/aos/aos-message_bridge-Timestamp",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "logger",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/logger/aos/remote_timestamps/pi3/logger/aos/aos-message_bridge-Timestamp",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "logger",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/logger/aos/remote_timestamps/pi4/logger/aos/aos-message_bridge-Timestamp",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "logger",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/logger/aos/remote_timestamps/pi5/logger/aos/aos-message_bridge-Timestamp",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "logger",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/pi1/camera",
+ "type": "frc971.vision.CameraImage",
+ "source_node": "pi1",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 3,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi2/camera",
+ "type": "frc971.vision.CameraImage",
+ "source_node": "pi2",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 3,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi3/camera",
+ "type": "frc971.vision.CameraImage",
+ "source_node": "pi3",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 3,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi4/camera",
+ "type": "frc971.vision.CameraImage",
+ "source_node": "pi4",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 3,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi5/camera",
+ "type": "frc971.vision.CameraImage",
+ "source_node": "pi5",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "logger"
+ ],
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 3,
+ "time_to_live": 5000000
+ }
+ ]
+ }
+ ],
+ "maps": [
+ {
+ "match": {
+ "name": "/aos*",
+ "source_node": "logger"
+ },
+ "rename": {
+ "name": "/logger/aos"
+ }
+ }
+ ],
+ "applications": [
+ {
+ "name": "message_bridge_client",
+ "executable_name": "message_bridge_client",
+ "args": ["--rmem=8388608"],
+ "nodes": [
+ "logger"
+ ]
+ },
+ {
+ "name": "message_bridge_server",
+ "executable_name": "message_bridge_server",
+ "nodes": [
+ "logger"
+ ]
+ },
+ {
+ "name": "image_logger",
+ "executable_name": "logger_main",
+ "args": ["--snappy_compress", "--logging_folder", "", "--snappy_compress"],
+ "nodes": [
+ "logger"
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "name": "logger",
+ "hostname": "logger",
+ "hostnames": [
+ "pi-971-6",
+ "pi-9971-6",
+ "ASchuh-T480s",
+ "aschuh-3950x"
+ ],
+ "port": 9971
+ },
+ {
+ "name": "pi1"
+ },
+ {
+ "name": "pi2"
+ },
+ {
+ "name": "pi3"
+ },
+ {
+ "name": "roborio"
+ },
+ {
+ "name": "pi4"
+ },
+ {
+ "name": "pi5"
+ }
+ ]
+}
diff --git a/y2022/y2022_pi_template.json b/y2022/y2022_pi_template.json
new file mode 100644
index 0000000..4994a36
--- /dev/null
+++ b/y2022/y2022_pi_template.json
@@ -0,0 +1,278 @@
+{
+ "channels": [
+ {
+ "name": "/pi{{ NUM }}/aos",
+ "type": "aos.timing.Report",
+ "source_node": "pi{{ NUM }}",
+ "frequency": 50,
+ "num_senders": 20,
+ "max_size": 4096
+ },
+ {
+ "name": "/pi{{ NUM }}/aos",
+ "type": "aos.logging.LogMessageFbs",
+ "source_node": "pi{{ NUM }}",
+ "frequency": 200,
+ "num_senders": 20
+ },
+ {
+ "name": "/pi{{ NUM }}/aos",
+ "type": "aos.starter.Status",
+ "source_node": "pi{{ NUM }}",
+ "frequency": 50,
+ "num_senders": 20,
+ "destination_nodes": [
+ {
+ "name": "roborio",
+ "priority": 5,
+ "time_to_live": 5000000
+ },
+ {
+ "name": "logger",
+ "priority": 5,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi{{ NUM }}/aos",
+ "type": "aos.starter.StarterRpc",
+ "source_node": "pi{{ NUM }}",
+ "frequency": 10,
+ "num_senders": 2,
+ "destination_nodes": [
+ {
+ "name": "roborio",
+ "priority": 5,
+ "time_to_live": 5000000
+ },
+ {
+ "name": "logger",
+ "priority": 5,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi{{ NUM }}/aos",
+ "type": "aos.message_bridge.ServerStatistics",
+ "source_node": "pi{{ NUM }}",
+ "frequency": 10,
+ "num_senders": 2
+ },
+ {
+ "name": "/pi{{ NUM }}/aos",
+ "type": "aos.message_bridge.ClientStatistics",
+ "source_node": "pi{{ NUM }}",
+ "frequency": 10,
+ "num_senders": 2
+ },
+ {
+ "name": "/pi{{ NUM }}/aos",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "pi{{ NUM }}",
+ "frequency": 15,
+ "num_senders": 2,
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_nodes": [
+ "roborio"
+ ],
+ "max_size": 200,
+ "destination_nodes": [
+ {
+ "name": "roborio",
+ "priority": 1,
+ "time_to_live": 5000000,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "roborio"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "/pi{{ NUM }}/camera",
+ "type": "frc971.vision.CameraImage",
+ "source_node": "pi{{ NUM }}",
+ "frequency": 25,
+ "max_size": 620000,
+ "num_senders": 18
+ },
+ {
+ "name": "/pi{{ NUM }}/camera",
+ "type": "y2022.vision.TargetEstimate",
+ "source_node": "pi{{ NUM }}",
+ "frequency": 25,
+ "num_senders": 2
+ },
+ {
+ "name": "/logger/aos",
+ "type": "aos.starter.StarterRpc",
+ "source_node": "logger",
+ "destination_nodes": [
+ {
+ "name": "pi{{ NUM }}",
+ "priority": 5,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "logger"
+ ],
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/logger/aos/remote_timestamps/pi{{ NUM }}/logger/aos/aos-starter-StarterRpc",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "logger",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/logger/aos",
+ "type": "aos.starter.Status",
+ "source_node": "logger",
+ "destination_nodes": [
+ {
+ "name": "pi{{ NUM }}",
+ "priority": 5,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "logger"
+ ],
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/logger/aos/remote_timestamps/pi{{ NUM }}/logger/aos/aos-starter-Status",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "logger",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/roborio/aos",
+ "type": "aos.starter.StarterRpc",
+ "source_node": "roborio",
+ "destination_nodes": [
+ {
+ "name": "pi{{ NUM }}",
+ "priority": 5,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "roborio"
+ ],
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/roborio/aos/remote_timestamps/pi{{ NUM }}/roborio/aos/aos-starter-StarterRpc",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "roborio",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/roborio/aos",
+ "type": "aos.starter.Status",
+ "source_node": "roborio",
+ "destination_nodes": [
+ {
+ "name": "pi{{ NUM }}",
+ "priority": 5,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "roborio"
+ ],
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/roborio/aos/remote_timestamps/pi{{ NUM }}/roborio/aos/aos-starter-Status",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "roborio",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ }
+ ],
+ "applications": [
+ {
+ "name": "message_bridge_client",
+ "executable_name": "message_bridge_client",
+ "nodes": [
+ "pi{{ NUM }}"
+ ]
+ },
+ {
+ "name": "message_bridge_server",
+ "executable_name": "message_bridge_server",
+ "nodes": [
+ "pi{{ NUM }}"
+ ]
+ },
+ {
+ "name": "web_proxy",
+ "executable_name": "web_proxy_main",
+ "nodes": [
+ "pi{{ NUM }}"
+ ]
+ },
+ {
+ "name": "camera_reader",
+ "executable_name": "camera_reader",
+ "nodes": [
+ "pi{{ NUM }}"
+ ]
+ }
+ ],
+ "maps": [
+ {
+ "match": {
+ "name": "/aos*",
+ "source_node": "pi{{ NUM }}"
+ },
+ "rename": {
+ "name": "/pi{{ NUM }}/aos"
+ }
+ },
+ {
+ "match": {
+ "name": "/camera*",
+ "source_node": "pi{{ NUM }}"
+ },
+ "rename": {
+ "name": "/pi{{ NUM }}/camera"
+ }
+ }
+ ],
+ "nodes": [
+ {
+ "name": "pi{{ NUM }}",
+ "hostname": "pi{{ NUM }}",
+ "hostnames": [
+ "pi-971-{{ NUM }}",
+ "pi-7971-{{ NUM }}",
+ "pi-8971-{{ NUM }}",
+ "pi-9971-{{ NUM }}"
+ ],
+ "port": 9971
+ },
+ {
+ "name": "logger"
+ },
+ {
+ "name": "roborio"
+ }
+ ]
+}
diff --git a/y2022/y2022_roborio.json b/y2022/y2022_roborio.json
new file mode 100644
index 0000000..24144a8
--- /dev/null
+++ b/y2022/y2022_roborio.json
@@ -0,0 +1,456 @@
+{
+ "channels": [
+ {
+ "name": "/roborio/aos",
+ "type": "aos.JoystickState",
+ "source_node": "roborio",
+ "frequency": 75
+ },
+ {
+ "name": "/roborio/aos",
+ "type": "aos.RobotState",
+ "source_node": "roborio",
+ "frequency": 200
+ },
+ {
+ "name": "/roborio/aos",
+ "type": "aos.timing.Report",
+ "source_node": "roborio",
+ "frequency": 50,
+ "num_senders": 20,
+ "max_size": 4096
+ },
+ {
+ "name": "/roborio/aos",
+ "type": "aos.logging.LogMessageFbs",
+ "source_node": "roborio",
+ "frequency": 500,
+ "max_size": 344,
+ "num_senders": 20
+ },
+ {
+ "name": "/roborio/aos",
+ "type": "aos.starter.Status",
+ "source_node": "roborio",
+ "frequency": 50,
+ "num_senders": 20,
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 5,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "roborio"
+ ],
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/roborio/aos/remote_timestamps/logger/roborio/aos/aos-starter-Status",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "roborio",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/roborio/aos",
+ "type": "aos.starter.StarterRpc",
+ "source_node": "roborio",
+ "frequency": 10,
+ "max_size": 400,
+ "num_senders": 2,
+ "destination_nodes": [
+ {
+ "name": "logger",
+ "priority": 5,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "roborio"
+ ],
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/roborio/aos/remote_timestamps/logger/roborio/aos/aos-starter-StarterRpc",
+ "type": "aos.message_bridge.RemoteMessage",
+ "source_node": "roborio",
+ "logger": "NOT_LOGGED",
+ "frequency": 20,
+ "num_senders": 2,
+ "max_size": 200
+ },
+ {
+ "name": "/roborio/aos",
+ "type": "aos.message_bridge.ServerStatistics",
+ "source_node": "roborio",
+ "frequency": 10,
+ "num_senders": 2
+ },
+ {
+ "name": "/roborio/aos",
+ "type": "aos.message_bridge.ClientStatistics",
+ "source_node": "roborio",
+ "frequency": 15,
+ "max_size": 2000,
+ "num_senders": 2
+ },
+ {
+ "name": "/roborio/aos/remote_timestamps/logger/roborio/aos/aos-message_bridge-Timestamp",
+ "type": "aos.message_bridge.RemoteMessage",
+ "frequency": 200,
+ "source_node": "roborio"
+ },
+ {
+ "name": "/roborio/aos/remote_timestamps/pi1/roborio/aos/aos-message_bridge-Timestamp",
+ "type": "aos.message_bridge.RemoteMessage",
+ "frequency": 20,
+ "source_node": "roborio",
+ "max_size": 208
+ },
+ {
+ "name": "/roborio/aos/remote_timestamps/pi2/roborio/aos/aos-message_bridge-Timestamp",
+ "type": "aos.message_bridge.RemoteMessage",
+ "frequency": 20,
+ "source_node": "roborio",
+ "max_size": 208
+ },
+ {
+ "name": "/roborio/aos/remote_timestamps/pi3/roborio/aos/aos-message_bridge-Timestamp",
+ "type": "aos.message_bridge.RemoteMessage",
+ "frequency": 20,
+ "source_node": "roborio"
+ },
+ {
+ "name": "/roborio/aos/remote_timestamps/pi4/roborio/aos/aos-message_bridge-Timestamp",
+ "type": "aos.message_bridge.RemoteMessage",
+ "frequency": 20,
+ "source_node": "roborio"
+ },
+ {
+ "name": "/roborio/aos/remote_timestamps/pi5/roborio/aos/aos-message_bridge-Timestamp",
+ "type": "aos.message_bridge.RemoteMessage",
+ "frequency": 20,
+ "source_node": "roborio",
+ "max_size": 208
+ },
+ {
+ "name": "/roborio/aos",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "roborio",
+ "frequency": 15,
+ "num_senders": 2,
+ "max_size": 304,
+ "destination_nodes": [
+ {
+ "name": "pi1",
+ "priority": 1,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "roborio"
+ ],
+ "time_to_live": 5000000
+ },
+ {
+ "name": "pi2",
+ "priority": 1,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "roborio"
+ ],
+ "time_to_live": 5000000
+ },
+ {
+ "name": "pi3",
+ "priority": 1,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "roborio"
+ ],
+ "time_to_live": 5000000
+ },
+ {
+ "name": "pi4",
+ "priority": 1,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "roborio"
+ ],
+ "time_to_live": 5000000
+ },
+ {
+ "name": "pi5",
+ "priority": 1,
+ "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
+ "timestamp_logger_nodes": [
+ "roborio"
+ ],
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/superstructure",
+ "type": "y2022.control_loops.superstructure.Goal",
+ "source_node": "roborio",
+ "frequency": 200,
+ "max_size": 512
+ },
+ {
+ "name": "/superstructure",
+ "type": "y2022.control_loops.superstructure.Status",
+ "source_node": "roborio",
+ "frequency": 200,
+ "num_senders": 2
+ },
+ {
+ "name": "/superstructure",
+ "type": "y2022.control_loops.superstructure.Output",
+ "source_node": "roborio",
+ "frequency": 200,
+ "num_senders": 2,
+ "max_size": 224
+ },
+ {
+ "name": "/superstructure",
+ "type": "y2022.control_loops.superstructure.Position",
+ "source_node": "roborio",
+ "frequency": 200,
+ "num_senders": 2,
+ "max_size": 448
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.IMUValuesBatch",
+ "source_node": "roborio",
+ "frequency": 250,
+ "max_size": 2000,
+ "num_senders": 2
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.sensors.GyroReading",
+ "source_node": "roborio",
+ "frequency": 200,
+ "num_senders": 2
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.sensors.Uid",
+ "source_node": "roborio",
+ "frequency": 200,
+ "num_senders": 2
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.fb.Trajectory",
+ "source_node": "roborio",
+ "max_size": 600000,
+ "frequency": 10,
+ "logger": "NOT_LOGGED",
+ "num_senders": 2,
+ "read_method": "PIN",
+ "num_readers": 10
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.SplineGoal",
+ "source_node": "roborio",
+ "frequency": 10
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.Goal",
+ "source_node": "roborio",
+ "max_size": 224,
+ "frequency": 200
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.Position",
+ "source_node": "roborio",
+ "frequency": 200,
+ "max_size": 112,
+ "num_senders": 2
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.Output",
+ "source_node": "roborio",
+ "frequency": 200,
+ "max_size": 80,
+ "num_senders": 2
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.Status",
+ "source_node": "roborio",
+ "frequency": 200,
+ "max_size": 1616,
+ "num_senders": 2
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.LocalizerControl",
+ "source_node": "roborio",
+ "frequency": 200,
+ "max_size": 96
+ },
+ {
+ "name": "/drivetrain",
+ "type": "y2019.control_loops.drivetrain.TargetSelectorHint",
+ "source_node": "roborio"
+ },
+ {
+ "name": "/autonomous",
+ "type": "aos.common.actions.Status",
+ "source_node": "roborio"
+ },
+ {
+ "name": "/autonomous",
+ "type": "frc971.autonomous.Goal",
+ "source_node": "roborio"
+ },
+ {
+ "name": "/autonomous",
+ "type": "frc971.autonomous.AutonomousMode",
+ "source_node": "roborio",
+ "frequency": 200
+ },
+ {
+ "name": "/roborio/aos",
+ "type": "frc971.PDPValues",
+ "source_node": "roborio",
+ "frequency": 55,
+ "max_size": 368
+ },
+ {
+ "name": "/roborio/aos",
+ "type": "frc971.wpilib.PneumaticsToLog",
+ "source_node": "roborio",
+ "frequency": 50
+ }
+ ],
+ "applications": [
+ {
+ "name": "drivetrain",
+ "executable_name": "drivetrain",
+ "nodes": [
+ "roborio"
+ ]
+ },
+ {
+ "name": "trajectory_generator",
+ "executable_name": "trajectory_generator",
+ "nodes": [
+ "roborio"
+ ]
+ },
+ {
+ "name": "superstructure",
+ "executable_name": "superstructure",
+ "nodes": [
+ "roborio"
+ ]
+ },
+ {
+ "name": "joystick_reader",
+ "executable_name": "joystick_reader",
+ "nodes": [
+ "roborio"
+ ]
+ },
+ {
+ "name": "wpilib_interface",
+ "executable_name": "wpilib_interface",
+ "nodes": [
+ "roborio"
+ ]
+ },
+ {
+ "name": "autonomous_action",
+ "executable_name": "autonomous_action",
+ "nodes": [
+ "roborio"
+ ]
+ },
+ {
+ "name": "web_proxy",
+ "executable_name": "web_proxy_main",
+ "args": ["--min_ice_port=5800", "--max_ice_port=5810"],
+ "nodes": [
+ "roborio"
+ ]
+ },
+ {
+ "name": "message_bridge_client",
+ "executable_name": "message_bridge_client",
+ "args": ["--rt_priority=16"],
+ "nodes": [
+ "roborio"
+ ]
+ },
+ {
+ "name": "message_bridge_server",
+ "executable_name": "message_bridge_server",
+ "args": ["--rt_priority=16"],
+ "nodes": [
+ "roborio"
+ ]
+ },
+ {
+ "name": "logger",
+ "executable_name": "logger_main",
+ "args": ["--snappy_compress"],
+ "nodes": [
+ "roborio"
+ ]
+ }
+ ],
+ "maps": [
+ {
+ "match": {
+ "name": "/aos*",
+ "source_node": "roborio"
+ },
+ "rename": {
+ "name": "/roborio/aos"
+ }
+ }
+ ],
+ "nodes": [
+ {
+ "name": "roborio",
+ "hostname": "roborio",
+ "hostnames": [
+ "roboRIO-971-FRC",
+ "roboRIO-6971-FRC",
+ "roboRIO-7971-FRC",
+ "roboRIO-8971-FRC",
+ "roboRIO-9971-FRC"
+ ],
+ "port": 9971
+ },
+ {
+ "name": "logger"
+ },
+ {
+ "name": "pi1"
+ },
+ {
+ "name": "pi2"
+ },
+ {
+ "name": "pi3"
+ },
+ {
+ "name": "pi4"
+ },
+ {
+ "name": "pi5"
+ }
+ ]
+}
diff --git a/yarn.lock b/yarn.lock
index dc90302..7c4ac25 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,19 +2,1080 @@
# yarn lockfile v1
-"@bazel/rollup@latest":
- version "4.4.6"
- resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-4.4.6.tgz#936d34c9c8159d42f84f1ac3c9ebb1bed27f691a"
- integrity sha512-VujfM6QGuNpQZVzOf2nfAi3Xoi4EdA9nXXy6Gq4WiSaDPbgZrlXl/4Db+Hb6Nej5uvWqqppgvigCPHcWX9yM/w==
+"@angular-devkit/architect@0.1301.4":
+ version "0.1301.4"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1301.4.tgz#2fc51bcae0dcb581c8be401e2fde7bbd10b43076"
+ integrity sha512-p6G8CEMnE+gYwxRyEttj3QGsuNJ3Kusi7iwBIzWyf2RpJSdGzXdwUEiRGg6iS0YHFr06/ZFfAWfnM2DQvNm4TA==
dependencies:
- "@bazel/worker" "4.4.6"
+ "@angular-devkit/core" "13.1.4"
+ rxjs "6.6.7"
+
+"@angular-devkit/core@13.1.4":
+ version "13.1.4"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.1.4.tgz#b5b6ddd674ae351f83beff2e4a0d702096bdfd47"
+ integrity sha512-225Gjy4iVxh5Jo9njJnaG75M/Dt95UW+dEPCGWKV5E/++7UUlXlo9sNWq8x2vJm2nhtsPkpnXNOt4pW1mIDwqQ==
+ dependencies:
+ ajv "8.8.2"
+ ajv-formats "2.1.1"
+ fast-json-stable-stringify "2.1.0"
+ magic-string "0.25.7"
+ rxjs "6.6.7"
+ source-map "0.7.3"
+
+"@angular-devkit/schematics@13.1.4":
+ version "13.1.4"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.1.4.tgz#e8ed817887aa51268dec27d8d6188e2f3f10742a"
+ integrity sha512-yBa7IeC4cLZ7s137NAQD+sMB5c6SI6UJ6xYxl6J/CvV2RLGOZZA93i4GuRALi5s82eLi1fH+HEL/gvf3JQynzQ==
+ dependencies:
+ "@angular-devkit/core" "13.1.4"
+ jsonc-parser "3.0.0"
+ magic-string "0.25.7"
+ ora "5.4.1"
+ rxjs "6.6.7"
+
+"@angular/animations@latest":
+ version "13.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-13.1.3.tgz#2da6ad99602bfb450624a7499d6f81366c3a4519"
+ integrity sha512-OwsVQsNHubIgRcxnjti4CU3QJnqd7Z2b+2iu3M349Oxyqxz4DNCqKXalDuJZt/b0yNfirvYO3kCgBfj4PF43QQ==
+ dependencies:
+ tslib "^2.3.0"
+
+"@angular/cli@latest":
+ version "13.1.4"
+ resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-13.1.4.tgz#34e6e87d1c6950408167c41293cf2cd5d1e00a2e"
+ integrity sha512-PP9xpvDDCHhLTIZjewQQzzf+JbpF2s5mXTW2AgIL/E53ukaVvXwwjFMt9dQvECwut/LDpThoc3OfqcGrmwtqnA==
+ dependencies:
+ "@angular-devkit/architect" "0.1301.4"
+ "@angular-devkit/core" "13.1.4"
+ "@angular-devkit/schematics" "13.1.4"
+ "@schematics/angular" "13.1.4"
+ "@yarnpkg/lockfile" "1.1.0"
+ ansi-colors "4.1.1"
+ debug "4.3.3"
+ ini "2.0.0"
+ inquirer "8.2.0"
+ jsonc-parser "3.0.0"
+ npm-package-arg "8.1.5"
+ npm-pick-manifest "6.1.1"
+ open "8.4.0"
+ ora "5.4.1"
+ pacote "12.0.2"
+ resolve "1.20.0"
+ semver "7.3.5"
+ symbol-observable "4.0.0"
+ uuid "8.3.2"
+
+"@angular/common@latest":
+ version "13.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/common/-/common-13.1.3.tgz#4c80f45cfd00a17543559c5fbebe0a7a7cf403ed"
+ integrity sha512-8qf5syeXUogf3+GSu6IRJjrk46UKh9L0QuLx+OSIl/df0y1ewx7e28q3BAUEEnOnKrLzpPNxWs2iwModc4KYfg==
+ dependencies:
+ tslib "^2.3.0"
+
+"@angular/compiler-cli@latest":
+ version "13.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-13.1.3.tgz#0269370350e928f22f3150523f95bc490a1e7a7a"
+ integrity sha512-ALURaJATc54DzPuiZBvALf/alEp1wr7Hjmw4FuMn2cU7p8lwKkra1Dz5dAZOxh7jAcD1GJfrK/+Sb7A3cuuKjQ==
+ dependencies:
+ "@babel/core" "^7.8.6"
+ canonical-path "1.0.0"
+ chokidar "^3.0.0"
+ convert-source-map "^1.5.1"
+ dependency-graph "^0.11.0"
+ magic-string "^0.25.0"
+ reflect-metadata "^0.1.2"
+ semver "^7.0.0"
+ sourcemap-codec "^1.4.8"
+ tslib "^2.3.0"
+ yargs "^17.2.1"
+
+"@angular/compiler@latest":
+ version "13.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-13.1.3.tgz#fc33b06046599ecc943f55049e0a121d5ab46d4f"
+ integrity sha512-dbHs/Oa+Dn+7i0jKtlVDE0lD0DaUC+lVzAcTK/zS37LrckrTMn1CA+z9bZ4gpHig9RU0wgV3YORxv0wokyiB8A==
+ dependencies:
+ tslib "^2.3.0"
+
+"@angular/core@latest":
+ version "13.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/core/-/core-13.1.3.tgz#4afd71f674f9ead1aada81315f84846cdba10fa4"
+ integrity sha512-rvCnIAonRx7VnH2Mv9lQR+UYdlFQQetZCjPw8QOswOspEpHpEPDrp1HxDIqJnHxNqW0n8J3Zev/VgQYr0481UA==
+ dependencies:
+ tslib "^2.3.0"
+
+"@angular/platform-browser@latest":
+ version "13.1.3"
+ resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-13.1.3.tgz#69d90b10e89e11f14f5798d1b6fd788255a6114e"
+ integrity sha512-mnWjdr9UTNZvGk8jPI6O9FIhun8Q/0ghy3dg3I9AfRzEG4vPiIZW1ICksTiB+jV9etzhKpidtmg71bwgeXax1A==
+ dependencies:
+ tslib "^2.3.0"
+
+"@babel/cli@^7.6.0":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.16.8.tgz#44b9be7706762bfa3bff8adbf746da336eb0ab7c"
+ integrity sha512-FTKBbxyk5TclXOGmwYyqelqP5IF6hMxaeJskd85jbR5jBfYlwqgwAbJwnixi1ZBbTqKfFuAA95mdmUFeSRwyJA==
+ dependencies:
+ commander "^4.0.1"
+ convert-source-map "^1.1.0"
+ fs-readdir-recursive "^1.1.0"
+ glob "^7.0.0"
+ make-dir "^2.1.0"
+ slash "^2.0.0"
+ source-map "^0.5.0"
+ optionalDependencies:
+ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3"
+ chokidar "^3.4.0"
+
+"@babel/code-frame@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
+ integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
+ dependencies:
+ "@babel/highlight" "^7.16.7"
+
+"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60"
+ integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==
+
+"@babel/core@^7.6.0":
+ version "7.16.10"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.10.tgz#ebd034f8e7ac2b6bfcdaa83a161141a646f74b50"
+ integrity sha512-pbiIdZbCiMx/MM6toR+OfXarYix3uz0oVsnNtfdAGTcCTu3w/JGF8JhirevXLBJUu0WguSZI12qpKnx7EeMyLA==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.16.8"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helpers" "^7.16.7"
+ "@babel/parser" "^7.16.10"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.10"
+ "@babel/types" "^7.16.8"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.1.2"
+ semver "^6.3.0"
+ source-map "^0.5.0"
+
+"@babel/core@^7.8.6":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf"
+ integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.16.7"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helpers" "^7.16.7"
+ "@babel/parser" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.1.2"
+ semver "^6.3.0"
+ source-map "^0.5.0"
+
+"@babel/generator@^7.16.7", "@babel/generator@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe"
+ integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==
+ dependencies:
+ "@babel/types" "^7.16.8"
+ jsesc "^2.5.1"
+ source-map "^0.5.0"
+
+"@babel/helper-annotate-as-pure@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862"
+ integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b"
+ integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==
+ dependencies:
+ "@babel/helper-explode-assignable-expression" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b"
+ integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==
+ dependencies:
+ "@babel/compat-data" "^7.16.4"
+ "@babel/helper-validator-option" "^7.16.7"
+ browserslist "^4.17.5"
+ semver "^6.3.0"
+
+"@babel/helper-create-class-features-plugin@^7.16.7":
+ version "7.16.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz#8a6959b9cc818a88815ba3c5474619e9c0f2c21c"
+ integrity sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-member-expression-to-functions" "^7.16.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+
+"@babel/helper-create-regexp-features-plugin@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48"
+ integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ regexpu-core "^4.7.1"
+
+"@babel/helper-define-polyfill-provider@^0.3.1":
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665"
+ integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.13.0"
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/traverse" "^7.13.0"
+ debug "^4.1.1"
+ lodash.debounce "^4.0.8"
+ resolve "^1.14.2"
+ semver "^6.1.2"
+
+"@babel/helper-environment-visitor@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7"
+ integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-explode-assignable-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a"
+ integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-function-name@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f"
+ integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-get-function-arity@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
+ integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-hoist-variables@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246"
+ integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-member-expression-to-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0"
+ integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437"
+ integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-module-transforms@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41"
+ integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-simple-access" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-optimise-call-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2"
+ integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5"
+ integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==
+
+"@babel/helper-remap-async-to-generator@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3"
+ integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-wrap-function" "^7.16.8"
+ "@babel/types" "^7.16.8"
+
+"@babel/helper-replace-supers@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1"
+ integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-member-expression-to-functions" "^7.16.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-simple-access@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7"
+ integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.16.0":
+ version "7.16.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09"
+ integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==
+ dependencies:
+ "@babel/types" "^7.16.0"
+
+"@babel/helper-split-export-declaration@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b"
+ integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-validator-identifier@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
+ integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
+
+"@babel/helper-validator-option@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23"
+ integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==
+
+"@babel/helper-wrap-function@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200"
+ integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==
+ dependencies:
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.8"
+ "@babel/types" "^7.16.8"
+
+"@babel/helpers@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc"
+ integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==
+ dependencies:
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/highlight@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b"
+ integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.16.10":
+ version "7.16.10"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.10.tgz#aba1b1cb9696a24a19f59c41af9cf17d1c716a88"
+ integrity sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ==
+
+"@babel/parser@^7.16.7", "@babel/parser@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.8.tgz#61c243a3875f7d0b0962b0543a33ece6ff2f1f17"
+ integrity sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw==
+
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050"
+ integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9"
+ integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
+ "@babel/plugin-proposal-optional-chaining" "^7.16.7"
+
+"@babel/plugin-proposal-async-generator-functions@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8"
+ integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-remap-async-to-generator" "^7.16.8"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+
+"@babel/plugin-proposal-class-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0"
+ integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-proposal-class-static-block@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a"
+ integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+
+"@babel/plugin-proposal-dynamic-import@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2"
+ integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+
+"@babel/plugin-proposal-export-namespace-from@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163"
+ integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+
+"@babel/plugin-proposal-json-strings@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8"
+ integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+
+"@babel/plugin-proposal-logical-assignment-operators@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea"
+ integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99"
+ integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+
+"@babel/plugin-proposal-numeric-separator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9"
+ integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-proposal-object-rest-spread@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8"
+ integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==
+ dependencies:
+ "@babel/compat-data" "^7.16.4"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-transform-parameters" "^7.16.7"
+
+"@babel/plugin-proposal-optional-catch-binding@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf"
+ integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+
+"@babel/plugin-proposal-optional-chaining@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a"
+ integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+
+"@babel/plugin-proposal-private-methods@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz#e418e3aa6f86edd6d327ce84eff188e479f571e0"
+ integrity sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-proposal-private-property-in-object@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce"
+ integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+
+"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2"
+ integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-syntax-async-generators@^7.8.4":
+ version "7.8.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
+ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-class-properties@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
+ integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-class-static-block@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
+ integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-dynamic-import@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-export-namespace-from@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
+ integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.3"
+
+"@babel/plugin-syntax-json-strings@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
+ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
+ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
+ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-numeric-separator@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
+ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-object-rest-spread@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
+ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
+ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-chaining@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
+ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-private-property-in-object@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
+ integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-top-level-await@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
+ integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-transform-arrow-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154"
+ integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-async-to-generator@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808"
+ integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-remap-async-to-generator" "^7.16.8"
+
+"@babel/plugin-transform-block-scoped-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620"
+ integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-block-scoping@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87"
+ integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-classes@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00"
+ integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470"
+ integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-destructuring@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23"
+ integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241"
+ integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-duplicate-keys@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9"
+ integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-exponentiation-operator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b"
+ integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-for-of@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c"
+ integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-function-name@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf"
+ integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1"
+ integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-member-expression-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384"
+ integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-modules-amd@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186"
+ integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-commonjs@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe"
+ integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-simple-access" "^7.16.7"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-systemjs@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7"
+ integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-umd@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618"
+ integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252"
+ integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+
+"@babel/plugin-transform-new-target@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244"
+ integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-object-super@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94"
+ integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+
+"@babel/plugin-transform-parameters@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f"
+ integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-property-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55"
+ integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-regenerator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb"
+ integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==
+ dependencies:
+ regenerator-transform "^0.14.2"
+
+"@babel/plugin-transform-reserved-words@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586"
+ integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-shorthand-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a"
+ integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-spread@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44"
+ integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
+
+"@babel/plugin-transform-sticky-regex@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660"
+ integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-template-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab"
+ integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-typeof-symbol@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e"
+ integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-unicode-escapes@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3"
+ integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-unicode-regex@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2"
+ integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/preset-env@^7.6.0":
+ version "7.16.10"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.10.tgz#84400e6b5ee1efd982f55c61f3b6ac3fb5c8ab57"
+ integrity sha512-iCac3fZn9oOcLqc1N2/copPiX7aoxzsvjeDdXoZobrlbQ6YGgS3bL9HyldOJ8V8AY5P7pFynCATrn7M4dMw0Yg==
+ dependencies:
+ "@babel/compat-data" "^7.16.8"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-option" "^7.16.7"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7"
+ "@babel/plugin-proposal-async-generator-functions" "^7.16.8"
+ "@babel/plugin-proposal-class-properties" "^7.16.7"
+ "@babel/plugin-proposal-class-static-block" "^7.16.7"
+ "@babel/plugin-proposal-dynamic-import" "^7.16.7"
+ "@babel/plugin-proposal-export-namespace-from" "^7.16.7"
+ "@babel/plugin-proposal-json-strings" "^7.16.7"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7"
+ "@babel/plugin-proposal-numeric-separator" "^7.16.7"
+ "@babel/plugin-proposal-object-rest-spread" "^7.16.7"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.16.7"
+ "@babel/plugin-proposal-optional-chaining" "^7.16.7"
+ "@babel/plugin-proposal-private-methods" "^7.16.7"
+ "@babel/plugin-proposal-private-property-in-object" "^7.16.7"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.16.7"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+ "@babel/plugin-syntax-top-level-await" "^7.14.5"
+ "@babel/plugin-transform-arrow-functions" "^7.16.7"
+ "@babel/plugin-transform-async-to-generator" "^7.16.8"
+ "@babel/plugin-transform-block-scoped-functions" "^7.16.7"
+ "@babel/plugin-transform-block-scoping" "^7.16.7"
+ "@babel/plugin-transform-classes" "^7.16.7"
+ "@babel/plugin-transform-computed-properties" "^7.16.7"
+ "@babel/plugin-transform-destructuring" "^7.16.7"
+ "@babel/plugin-transform-dotall-regex" "^7.16.7"
+ "@babel/plugin-transform-duplicate-keys" "^7.16.7"
+ "@babel/plugin-transform-exponentiation-operator" "^7.16.7"
+ "@babel/plugin-transform-for-of" "^7.16.7"
+ "@babel/plugin-transform-function-name" "^7.16.7"
+ "@babel/plugin-transform-literals" "^7.16.7"
+ "@babel/plugin-transform-member-expression-literals" "^7.16.7"
+ "@babel/plugin-transform-modules-amd" "^7.16.7"
+ "@babel/plugin-transform-modules-commonjs" "^7.16.8"
+ "@babel/plugin-transform-modules-systemjs" "^7.16.7"
+ "@babel/plugin-transform-modules-umd" "^7.16.7"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8"
+ "@babel/plugin-transform-new-target" "^7.16.7"
+ "@babel/plugin-transform-object-super" "^7.16.7"
+ "@babel/plugin-transform-parameters" "^7.16.7"
+ "@babel/plugin-transform-property-literals" "^7.16.7"
+ "@babel/plugin-transform-regenerator" "^7.16.7"
+ "@babel/plugin-transform-reserved-words" "^7.16.7"
+ "@babel/plugin-transform-shorthand-properties" "^7.16.7"
+ "@babel/plugin-transform-spread" "^7.16.7"
+ "@babel/plugin-transform-sticky-regex" "^7.16.7"
+ "@babel/plugin-transform-template-literals" "^7.16.7"
+ "@babel/plugin-transform-typeof-symbol" "^7.16.7"
+ "@babel/plugin-transform-unicode-escapes" "^7.16.7"
+ "@babel/plugin-transform-unicode-regex" "^7.16.7"
+ "@babel/preset-modules" "^0.1.5"
+ "@babel/types" "^7.16.8"
+ babel-plugin-polyfill-corejs2 "^0.3.0"
+ babel-plugin-polyfill-corejs3 "^0.5.0"
+ babel-plugin-polyfill-regenerator "^0.3.0"
+ core-js-compat "^3.20.2"
+ semver "^6.3.0"
+
+"@babel/preset-modules@^0.1.5":
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9"
+ integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
+ "@babel/types" "^7.4.4"
+ esutils "^2.0.2"
+
+"@babel/runtime@^7.8.4":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa"
+ integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/template@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
+ integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/parser" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.8":
+ version "7.16.10"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f"
+ integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.16.8"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/parser" "^7.16.10"
+ "@babel/types" "^7.16.8"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/traverse@^7.16.7":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.8.tgz#bab2f2b09a5fe8a8d9cad22cbfe3ba1d126fef9c"
+ integrity sha512-xe+H7JlvKsDQwXRsBhSnq1/+9c+LlQcCK3Tn/l5sbx02HYns/cn7ibp9+RV1sIUqu7hKg91NWsgHurO9dowITQ==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.16.8"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/parser" "^7.16.8"
+ "@babel/types" "^7.16.8"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.4.4":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1"
+ integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ to-fast-properties "^2.0.0"
+
+"@bazel/concatjs@latest":
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/@bazel/concatjs/-/concatjs-4.6.1.tgz#c40abc3fbe362cbad1e3383c4e78b58d1f4c8e13"
+ integrity sha512-eI79oS1F8vK9kw8ttg/zeQYyOiN9FfhJjYyammkc3q4WlNs3Xm717Cp/CquSwPyFh022mB00Tib4gHJ7zp+VpA==
+ dependencies:
+ protobufjs "6.8.8"
+ source-map-support "0.5.9"
+ tsutils "3.21.0"
+
+"@bazel/rollup@latest":
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-4.6.1.tgz#7e5054b1b43c1052bdd8824d9f1a11a410d540e2"
+ integrity sha512-8a2halG0dnzjs0BgGiHOM47LVCotGW0I9lSWLdwrTxTNOp8fEdbZ8C7TMHFE+8Zc3Z5oerqR8uvIpMarOJQumQ==
+ dependencies:
+ "@bazel/worker" "4.6.1"
"@bazel/terser@latest":
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-4.5.0.tgz#f5fe56b5e398d2a7f5ae8db0463b5f00cdc4e6dc"
- integrity sha512-CEjCwZCag8HpDi8d56rVSS0DRn/AzhDZqzM8G5+j2V+cyhn8Iv+yHLqMb4oOZ3Z4XMZQzw+MnHGv2MGvtOyvvw==
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-4.6.1.tgz#a3f70672cef7b9383b42930691d6fc8be4b8d993"
+ integrity sha512-LOXNSLCscyiNDxhLEgIL+Unj7UQpH6s+IkujizRpEyMrVVrhun5do972ab4TdqCXi9rxQKBBkgj8EL43gMimwg==
-"@bazel/typescript@latest":
+"@bazel/typescript@4.4.6":
version "4.4.6"
resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-4.4.6.tgz#fbaac22460b3aa4a0961c6c657d239af8f895778"
integrity sha512-J205En8MjmnWSPnz4CqJm1x4mzcdWM+HvAsOzzVb0DHx86O+mjPFwqleeAtPGLTE9aWskel81XICJfEuTlNtiw==
@@ -32,6 +1093,83 @@
dependencies:
google-protobuf "^3.6.1"
+"@bazel/worker@4.6.1":
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-4.6.1.tgz#96925f5819344225d4fe40ffa630a3c5f4847a0b"
+ integrity sha512-D6TsHxGSljmlLoz8FXL1+ISh8XnDuRkBpT6Mz0wD62eWajUZASTfX9I4HNiLNbsWY4Omc7nKXI+j4R8/BLciFg==
+ dependencies:
+ google-protobuf "^3.6.1"
+
+"@gar/promisify@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210"
+ integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==
+
+"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3":
+ version "2.1.8-no-fsevents.3"
+ resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b"
+ integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==
+
+"@npmcli/fs@^1.0.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.0.tgz#bec1d1b89c170d40e1b73ad6c943b0b75e7d2951"
+ integrity sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA==
+ dependencies:
+ "@gar/promisify" "^1.0.1"
+ semver "^7.3.5"
+
+"@npmcli/git@^2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6"
+ integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==
+ dependencies:
+ "@npmcli/promise-spawn" "^1.3.2"
+ lru-cache "^6.0.0"
+ mkdirp "^1.0.4"
+ npm-pick-manifest "^6.1.1"
+ promise-inflight "^1.0.1"
+ promise-retry "^2.0.1"
+ semver "^7.3.5"
+ which "^2.0.2"
+
+"@npmcli/installed-package-contents@^1.0.6":
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa"
+ integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==
+ dependencies:
+ npm-bundled "^1.1.1"
+ npm-normalize-package-bin "^1.0.1"
+
+"@npmcli/move-file@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674"
+ integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==
+ dependencies:
+ mkdirp "^1.0.4"
+ rimraf "^3.0.2"
+
+"@npmcli/node-gyp@^1.0.2":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33"
+ integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==
+
+"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2":
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5"
+ integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==
+ dependencies:
+ infer-owner "^1.0.4"
+
+"@npmcli/run-script@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-2.0.0.tgz#9949c0cab415b17aaac279646db4f027d6f1e743"
+ integrity sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==
+ dependencies:
+ "@npmcli/node-gyp" "^1.0.2"
+ "@npmcli/promise-spawn" "^1.3.2"
+ node-gyp "^8.2.0"
+ read-package-json-fast "^2.0.1"
+
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
@@ -106,6 +1244,20 @@
estree-walker "^1.0.1"
picomatch "^2.2.2"
+"@schematics/angular@13.1.4":
+ version "13.1.4"
+ resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-13.1.4.tgz#8b8c9ad40403c485bae9adeb51649711651189d2"
+ integrity sha512-P1YsHn1LLAmdpB9X2TBuUgrvEW/KaoBbHr8ifYO8/uQEXyeiIF+So8h/dnegkYkdsr3OwQ2X/j3UF6/+HS0odg==
+ dependencies:
+ "@angular-devkit/core" "13.1.4"
+ "@angular-devkit/schematics" "13.1.4"
+ jsonc-parser "3.0.0"
+
+"@tootallnate/once@1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
+ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
+
"@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
@@ -138,30 +1290,564 @@
dependencies:
"@types/node" "*"
+"@yarnpkg/lockfile@1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
+ integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
+
+abbrev@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
+agent-base@6, agent-base@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+ dependencies:
+ debug "4"
+
+agentkeepalive@^4.1.3:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.0.tgz#616ce94ccb41d1a39a45d203d8076fe98713062d"
+ integrity sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw==
+ dependencies:
+ debug "^4.1.0"
+ depd "^1.1.2"
+ humanize-ms "^1.2.1"
+
+aggregate-error@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
+ dependencies:
+ clean-stack "^2.0.0"
+ indent-string "^4.0.0"
+
+ajv-formats@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
+ integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==
+ dependencies:
+ ajv "^8.0.0"
+
+ajv@8.8.2:
+ version "8.8.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb"
+ integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
+ajv@^8.0.0:
+ version "8.9.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.9.0.tgz#738019146638824dea25edcf299dcba1b0e7eb18"
+ integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
+ansi-colors@4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
+ integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+
+ansi-escapes@^4.2.1:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
+ integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
+ dependencies:
+ type-fest "^0.21.3"
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+anymatch@~3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+"aproba@^1.0.3 || ^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
+ integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
+
+are-we-there-yet@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c"
+ integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^3.6.0"
+
+babel-plugin-dynamic-import-node@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
+ integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
+ dependencies:
+ object.assign "^4.1.0"
+
+babel-plugin-polyfill-corejs2@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5"
+ integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==
+ dependencies:
+ "@babel/compat-data" "^7.13.11"
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+ semver "^6.1.1"
+
+babel-plugin-polyfill-corejs3@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz#d66183bf10976ea677f4149a7fcc4d8df43d4060"
+ integrity sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+ core-js-compat "^3.20.0"
+
+babel-plugin-polyfill-regenerator@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990"
+ integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base64-js@^1.3.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+bl@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
+ integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
+ dependencies:
+ buffer "^5.5.0"
+ inherits "^2.0.4"
+ readable-stream "^3.4.0"
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+browserslist@^4.17.5, browserslist@^4.19.1:
+ version "4.19.1"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3"
+ integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==
+ dependencies:
+ caniuse-lite "^1.0.30001286"
+ electron-to-chromium "^1.4.17"
+ escalade "^3.1.1"
+ node-releases "^2.0.1"
+ picocolors "^1.0.0"
+
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+buffer@^5.5.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.1.13"
+
builtin-modules@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887"
integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==
+builtins@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
+ integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og=
+
+cacache@^15.0.5, cacache@^15.2.0:
+ version "15.3.0"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb"
+ integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==
+ dependencies:
+ "@npmcli/fs" "^1.0.0"
+ "@npmcli/move-file" "^1.0.1"
+ chownr "^2.0.0"
+ fs-minipass "^2.0.0"
+ glob "^7.1.4"
+ infer-owner "^1.0.4"
+ lru-cache "^6.0.0"
+ minipass "^3.1.1"
+ minipass-collect "^1.0.2"
+ minipass-flush "^1.0.5"
+ minipass-pipeline "^1.2.2"
+ mkdirp "^1.0.3"
+ p-map "^4.0.0"
+ promise-inflight "^1.0.1"
+ rimraf "^3.0.2"
+ ssri "^8.0.1"
+ tar "^6.0.2"
+ unique-filename "^1.1.1"
+
+call-bind@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+ dependencies:
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+
+caniuse-lite@^1.0.30001286:
+ version "1.0.30001299"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001299.tgz#d753bf6444ed401eb503cbbe17aa3e1451b5a68c"
+ integrity sha512-iujN4+x7QzqA2NCSrS5VUy+4gLmRd4xv6vbBBsmfVqTx8bLAD8097euLqQgKxSVLvxjSDcvF1T/i9ocgnUFexw==
+
+canonical-path@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d"
+ integrity sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==
+
+chalk@^2.0.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^4.1.0, chalk@^4.1.1:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chardet@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
+ integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
+
+chokidar@^3.0.0:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
+ integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+chokidar@^3.4.0:
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+chownr@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
+ integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
+
+clean-stack@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ dependencies:
+ restore-cursor "^3.1.0"
+
+cli-spinners@^2.5.0:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d"
+ integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==
+
+cli-width@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
+ integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
+
+cliui@^7.0.2:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
+ integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^7.0.0"
+
+clone@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+ integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-support@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
+ integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
+
commander@^2.20.0:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+commander@^4.0.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
+ integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+console-control-strings@^1.0.0, console-control-strings@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+convert-source-map@^1.1.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
+ integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+core-js-compat@^3.20.0, core-js-compat@^3.20.2:
+ version "3.20.3"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.3.tgz#d71f85f94eb5e4bea3407412e549daa083d23bd6"
+ integrity sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==
+ dependencies:
+ browserslist "^4.19.1"
+ semver "7.0.0"
+
+debug@4, debug@4.3.3, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
+ integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
+ dependencies:
+ ms "2.1.2"
+
deepmerge@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
+defaults@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
+ integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
+ dependencies:
+ clone "^1.0.2"
+
+define-lazy-prop@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
+ integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
+
+define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+depd@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+
+dependency-graph@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27"
+ integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==
+
+electron-to-chromium@^1.4.17:
+ version "1.4.46"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.46.tgz#c88a6fedc766589826db0481602a888864ade1ca"
+ integrity sha512-UtV0xUA/dibCKKP2JMxOpDtXR74zABevuUEH4K0tvduFSIoxRVcYmQsbB51kXsFTX8MmOyWMt8tuZAlmDOqkrQ==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+encoding@^0.1.12:
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
+ integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
+ dependencies:
+ iconv-lite "^0.6.2"
+
+env-paths@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
+ integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
+
+err-code@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9"
+ integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==
+
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
estree-walker@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+external-editor@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
+ integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
+ dependencies:
+ chardet "^0.7.0"
+ iconv-lite "^0.4.24"
+ tmp "^0.0.33"
+
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-json-stable-stringify@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+figures@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
+ integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+fs-minipass@^2.0.0, fs-minipass@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
+ integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
+ dependencies:
+ minipass "^3.0.0"
+
+fs-readdir-recursive@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
+ integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
@@ -172,11 +1858,94 @@
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+gauge@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8"
+ integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==
+ dependencies:
+ ansi-regex "^5.0.1"
+ aproba "^1.0.3 || ^2.0.0"
+ color-support "^1.1.2"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.1"
+ signal-exit "^3.0.0"
+ string-width "^4.2.3"
+ strip-ansi "^6.0.1"
+ wide-align "^1.1.2"
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-caller-file@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-intrinsic@^1.0.2:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
+ integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+
+glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
+ integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
google-protobuf@^3.6.1:
version "3.19.1"
resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.19.1.tgz#5af5390e8206c446d8f49febaffd4b7f4ac28f41"
integrity sha512-Isv1RlNC+IzZzilcxnlVSf+JvuhxmY7DaxYCBy+zPS9XVuJRtlTTIXR9hnZ1YL1MMusJn/7eSy2swCzZIomQSg==
+graceful-fs@^4.2.6:
+ version "4.2.9"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
+ integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-symbols@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
+ integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
+
+has-unicode@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
@@ -184,33 +1953,656 @@
dependencies:
function-bind "^1.1.1"
-is-core-module@^2.8.0:
+hosted-git-info@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224"
+ integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==
+ dependencies:
+ lru-cache "^6.0.0"
+
+html-insert-assets@^0.14.2:
+ version "0.14.2"
+ resolved "https://registry.yarnpkg.com/html-insert-assets/-/html-insert-assets-0.14.2.tgz#134ccfbfcc847ddc37b4e4a610c29ccfd846eea8"
+ integrity sha512-6jx1Btu9D1iGlSTLMEHsqSqt0c1WJVhGNz4bEjDQ9y17JpB+GVUzr8M0MXjwPpQHDtiWdTdQ3qvPMlLzNmDXaw==
+ dependencies:
+ mkdirp "^1.0.3"
+ parse5 "^6.0.0"
+
+http-cache-semantics@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
+ integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
+
+http-proxy-agent@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
+ integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
+ dependencies:
+ "@tootallnate/once" "1"
+ agent-base "6"
+ debug "4"
+
+https-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
+ integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
+humanize-ms@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
+ integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=
+ dependencies:
+ ms "^2.0.0"
+
+iconv-lite@^0.4.24:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.6.2:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+ieee754@^1.1.13:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+ignore-walk@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-4.0.1.tgz#fc840e8346cf88a3a9380c5b17933cd8f4d39fa3"
+ integrity sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==
+ dependencies:
+ minimatch "^3.0.4"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+
+infer-owner@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@^2.0.3, inherits@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+ini@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
+ integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
+
+inquirer@8.2.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a"
+ integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ chalk "^4.1.1"
+ cli-cursor "^3.1.0"
+ cli-width "^3.0.0"
+ external-editor "^3.0.3"
+ figures "^3.0.0"
+ lodash "^4.17.21"
+ mute-stream "0.0.8"
+ ora "^5.4.1"
+ run-async "^2.4.0"
+ rxjs "^7.2.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+ through "^2.3.6"
+
+ip@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
+ integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-core-module@^2.2.0, is-core-module@^2.8.0:
version "2.8.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
dependencies:
has "^1.0.3"
+is-docker@^2.0.0, is-docker@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-interactive@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
+ integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
+
+is-lambda@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5"
+ integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=
+
is-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-unicode-supported@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
+ integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
+
+is-wsl@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.0.0"
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+
+json5@^2.1.2:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
+ dependencies:
+ minimist "^1.2.5"
+
+jsonc-parser@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22"
+ integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==
+
+jsonparse@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
+ integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
+
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
+
+lodash@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+log-symbols@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
+ integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
+ dependencies:
+ chalk "^4.1.0"
+ is-unicode-supported "^0.1.0"
+
long@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
-path-parse@^1.0.7:
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+magic-string@0.25.7, magic-string@^0.25.0:
+ version "0.25.7"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
+ integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
+ dependencies:
+ sourcemap-codec "^1.4.4"
+
+make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968"
+ integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==
+ dependencies:
+ agentkeepalive "^4.1.3"
+ cacache "^15.2.0"
+ http-cache-semantics "^4.1.0"
+ http-proxy-agent "^4.0.1"
+ https-proxy-agent "^5.0.0"
+ is-lambda "^1.0.1"
+ lru-cache "^6.0.0"
+ minipass "^3.1.3"
+ minipass-collect "^1.0.2"
+ minipass-fetch "^1.3.2"
+ minipass-flush "^1.0.5"
+ minipass-pipeline "^1.2.4"
+ negotiator "^0.6.2"
+ promise-retry "^2.0.1"
+ socks-proxy-agent "^6.0.0"
+ ssri "^8.0.0"
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+minipass-collect@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
+ integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass-fetch@^1.3.0, minipass-fetch@^1.3.2:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6"
+ integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==
+ dependencies:
+ minipass "^3.1.0"
+ minipass-sized "^1.0.3"
+ minizlib "^2.0.0"
+ optionalDependencies:
+ encoding "^0.1.12"
+
+minipass-flush@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373"
+ integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass-json-stream@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7"
+ integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==
+ dependencies:
+ jsonparse "^1.3.1"
+ minipass "^3.0.0"
+
+minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c"
+ integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass-sized@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70"
+ integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3:
+ version "3.1.6"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee"
+ integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==
+ dependencies:
+ yallist "^4.0.0"
+
+minizlib@^2.0.0, minizlib@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
+ integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
+ dependencies:
+ minipass "^3.0.0"
+ yallist "^4.0.0"
+
+mkdirp@^1.0.3, mkdirp@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@^2.0.0:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+mute-stream@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
+ integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
+negotiator@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
+ integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
+
+node-gyp@^8.2.0:
+ version "8.4.1"
+ resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937"
+ integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==
+ dependencies:
+ env-paths "^2.2.0"
+ glob "^7.1.4"
+ graceful-fs "^4.2.6"
+ make-fetch-happen "^9.1.0"
+ nopt "^5.0.0"
+ npmlog "^6.0.0"
+ rimraf "^3.0.2"
+ semver "^7.3.5"
+ tar "^6.1.2"
+ which "^2.0.2"
+
+node-releases@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5"
+ integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==
+
+nopt@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88"
+ integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==
+ dependencies:
+ abbrev "1"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+npm-bundled@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1"
+ integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==
+ dependencies:
+ npm-normalize-package-bin "^1.0.1"
+
+npm-install-checks@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4"
+ integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==
+ dependencies:
+ semver "^7.1.1"
+
+npm-normalize-package-bin@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
+ integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
+
+npm-package-arg@8.1.5, npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2:
+ version "8.1.5"
+ resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44"
+ integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==
+ dependencies:
+ hosted-git-info "^4.0.1"
+ semver "^7.3.4"
+ validate-npm-package-name "^3.0.0"
+
+npm-packlist@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-3.0.0.tgz#0370df5cfc2fcc8f79b8f42b37798dd9ee32c2a9"
+ integrity sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==
+ dependencies:
+ glob "^7.1.6"
+ ignore-walk "^4.0.1"
+ npm-bundled "^1.1.1"
+ npm-normalize-package-bin "^1.0.1"
+
+npm-pick-manifest@6.1.1, npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148"
+ integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==
+ dependencies:
+ npm-install-checks "^4.0.0"
+ npm-normalize-package-bin "^1.0.1"
+ npm-package-arg "^8.1.2"
+ semver "^7.3.4"
+
+npm-registry-fetch@^11.0.0:
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76"
+ integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==
+ dependencies:
+ make-fetch-happen "^9.0.1"
+ minipass "^3.1.3"
+ minipass-fetch "^1.3.0"
+ minipass-json-stream "^1.0.1"
+ minizlib "^2.0.0"
+ npm-package-arg "^8.0.0"
+
+npmlog@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.0.tgz#ba9ef39413c3d936ea91553db7be49c34ad0520c"
+ integrity sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==
+ dependencies:
+ are-we-there-yet "^2.0.0"
+ console-control-strings "^1.1.0"
+ gauge "^4.0.0"
+ set-blocking "^2.0.0"
+
+object-keys@^1.0.12, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object.assign@^4.1.0:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ has-symbols "^1.0.1"
+ object-keys "^1.1.1"
+
+once@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^5.1.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+open@8.4.0:
+ version "8.4.0"
+ resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
+ integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==
+ dependencies:
+ define-lazy-prop "^2.0.0"
+ is-docker "^2.1.1"
+ is-wsl "^2.2.0"
+
+ora@5.4.1, ora@^5.4.1:
+ version "5.4.1"
+ resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18"
+ integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==
+ dependencies:
+ bl "^4.1.0"
+ chalk "^4.1.0"
+ cli-cursor "^3.1.0"
+ cli-spinners "^2.5.0"
+ is-interactive "^1.0.0"
+ is-unicode-supported "^0.1.0"
+ log-symbols "^4.1.0"
+ strip-ansi "^6.0.0"
+ wcwidth "^1.0.1"
+
+os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+p-map@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
+ dependencies:
+ aggregate-error "^3.0.0"
+
+pacote@12.0.2:
+ version "12.0.2"
+ resolved "https://registry.yarnpkg.com/pacote/-/pacote-12.0.2.tgz#14ae30a81fe62ec4fc18c071150e6763e932527c"
+ integrity sha512-Ar3mhjcxhMzk+OVZ8pbnXdb0l8+pimvlsqBGRNkble2NVgyqOGE3yrCGi/lAYq7E7NRDMz89R1Wx5HIMCGgeYg==
+ dependencies:
+ "@npmcli/git" "^2.1.0"
+ "@npmcli/installed-package-contents" "^1.0.6"
+ "@npmcli/promise-spawn" "^1.2.0"
+ "@npmcli/run-script" "^2.0.0"
+ cacache "^15.0.5"
+ chownr "^2.0.0"
+ fs-minipass "^2.1.0"
+ infer-owner "^1.0.4"
+ minipass "^3.1.3"
+ mkdirp "^1.0.3"
+ npm-package-arg "^8.0.1"
+ npm-packlist "^3.0.0"
+ npm-pick-manifest "^6.0.0"
+ npm-registry-fetch "^11.0.0"
+ promise-retry "^2.0.1"
+ read-package-json-fast "^2.0.1"
+ rimraf "^3.0.2"
+ ssri "^8.0.1"
+ tar "^6.1.0"
+
+parse5@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
+ integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-parse@^1.0.6, path-parse@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
-picomatch@^2.2.2:
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+
+promise-retry@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22"
+ integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==
+ dependencies:
+ err-code "^2.0.2"
+ retry "^0.12.0"
+
protobufjs@6.8.8:
version "6.8.8"
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c"
@@ -230,7 +2622,107 @@
"@types/node" "^10.1.0"
long "^4.0.0"
-resolve@^1.19.0:
+punycode@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+read-package-json-fast@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83"
+ integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==
+ dependencies:
+ json-parse-even-better-errors "^2.3.0"
+ npm-normalize-package-bin "^1.0.1"
+
+readable-stream@^3.4.0, readable-stream@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+reflect-metadata@^0.1.2:
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
+ integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==
+
+regenerate-unicode-properties@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326"
+ integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==
+ dependencies:
+ regenerate "^1.4.2"
+
+regenerate@^1.4.2:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
+ integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
+
+regenerator-runtime@^0.13.4:
+ version "0.13.9"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
+ integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
+
+regenerator-transform@^0.14.2:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
+ integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
+ dependencies:
+ "@babel/runtime" "^7.8.4"
+
+regexpu-core@^4.7.1:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0"
+ integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==
+ dependencies:
+ regenerate "^1.4.2"
+ regenerate-unicode-properties "^9.0.0"
+ regjsgen "^0.5.2"
+ regjsparser "^0.7.0"
+ unicode-match-property-ecmascript "^2.0.0"
+ unicode-match-property-value-ecmascript "^2.0.0"
+
+regjsgen@^0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
+ integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
+
+regjsparser@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968"
+ integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==
+ dependencies:
+ jsesc "~0.5.0"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-from-string@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+
+resolve@1.20.0:
+ version "1.20.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
+ integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
+ dependencies:
+ is-core-module "^2.2.0"
+ path-parse "^1.0.6"
+
+resolve@^1.14.2, resolve@^1.19.0:
version "1.21.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f"
integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==
@@ -239,18 +2731,131 @@
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+retry@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
+ integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
+
+rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
rollup@latest:
- version "2.60.2"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.60.2.tgz#3f45ace36a9b10b4297181831ea0719922513463"
- integrity sha512-1Bgjpq61sPjgoZzuiDSGvbI1tD91giZABgjCQBKM5aYLnzjq52GoDuWVwT/cm/MCxCMPU8gqQvkj8doQ5C8Oqw==
+ version "2.64.0"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.64.0.tgz#f0f59774e21fbb56de438a37d06a2189632b207a"
+ integrity sha512-+c+lbw1lexBKSMb1yxGDVfJ+vchJH3qLbmavR+awDinTDA2C5Ug9u7lkOzj62SCu0PKUExsW36tpgW7Fmpn3yQ==
optionalDependencies:
fsevents "~2.3.2"
+run-async@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
+ integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
+
+rxjs@6.6.7:
+ version "6.6.7"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
+ integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
+ dependencies:
+ tslib "^1.9.0"
+
+rxjs@^7.2.0:
+ version "7.5.2"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.2.tgz#11e4a3a1dfad85dbf7fb6e33cbba17668497490b"
+ integrity sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==
+ dependencies:
+ tslib "^2.1.0"
+
+safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
semver@5.6.0:
version "5.6.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
+semver@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
+
+semver@7.3.5, semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5:
+ version "7.3.5"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
+ integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
+ dependencies:
+ lru-cache "^6.0.0"
+
+semver@^5.6.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+set-blocking@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+signal-exit@^3.0.0, signal-exit@^3.0.2:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af"
+ integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==
+
+slash@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
+ integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
+
+smart-buffer@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
+ integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
+
+socks-proxy-agent@^6.0.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87"
+ integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==
+ dependencies:
+ agent-base "^6.0.2"
+ debug "^4.3.1"
+ socks "^2.6.1"
+
+socks@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e"
+ integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==
+ dependencies:
+ ip "^1.1.5"
+ smart-buffer "^4.1.0"
+
source-map-support@0.5.9:
version "0.5.9"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f"
@@ -266,20 +2871,91 @@
buffer-from "^1.0.0"
source-map "^0.6.0"
+source-map@0.7.3, source-map@~0.7.2:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
+ integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+
+source-map@^0.5.0:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
source-map@^0.6.0:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-source-map@~0.7.2:
- version "0.7.3"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
- integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+ssri@^8.0.0, ssri@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af"
+ integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==
+ dependencies:
+ minipass "^3.1.1"
+
+"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+symbol-observable@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205"
+ integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==
+
+tar@^6.0.2, tar@^6.1.0, tar@^6.1.2:
+ version "6.1.11"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
+ integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
+ dependencies:
+ chownr "^2.0.0"
+ fs-minipass "^2.0.0"
+ minipass "^3.0.0"
+ minizlib "^2.1.1"
+ mkdirp "^1.0.3"
+ yallist "^4.0.0"
+
terser@latest:
version "5.10.0"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc"
@@ -289,10 +2965,44 @@
source-map "~0.7.2"
source-map-support "~0.5.20"
+through@^2.3.6:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
tslib@^1.8.1:
version "1.9.3"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
+tslib@^1.9.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
+ integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
+
tsutils@3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
@@ -300,7 +3010,143 @@
dependencies:
tslib "^1.8.1"
+type-fest@^0.21.3:
+ version "0.21.3"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
+ integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
+
typescript@latest:
- version "4.5.2"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998"
- integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==
+ version "4.5.4"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8"
+ integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==
+
+unicode-canonical-property-names-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
+ integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
+
+unicode-match-property-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3"
+ integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^2.0.0"
+ unicode-property-aliases-ecmascript "^2.0.0"
+
+unicode-match-property-value-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714"
+ integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==
+
+unicode-property-aliases-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
+ integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==
+
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+util-deprecate@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+uuid@8.3.2:
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+
+validate-npm-package-name@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e"
+ integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34=
+ dependencies:
+ builtins "^1.0.3"
+
+wcwidth@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+ integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
+ dependencies:
+ defaults "^1.0.3"
+
+which@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@^1.1.2:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
+ integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
+ dependencies:
+ string-width "^1.0.2 || 2 || 3 || 4"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+y18n@^5.0.5:
+ version "5.0.8"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
+ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yargs-parser@^21.0.0:
+ version "21.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55"
+ integrity sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==
+
+yargs@^17.2.1:
+ version "17.3.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.1.tgz#da56b28f32e2fd45aefb402ed9c26f42be4c07b9"
+ integrity sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==
+ dependencies:
+ cliui "^7.0.2"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.0.0"
+
+zone.js@^0.11.4:
+ version "0.11.4"
+ resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.11.4.tgz#0f70dcf6aba80f698af5735cbb257969396e8025"
+ integrity sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==
+ dependencies:
+ tslib "^2.0.0"