FooGallery – Image Gallery WordPress Plugin - Version 1.7.6

Version Description

  • Fix : fixed issues with paging introduced in 1.7.4
  • Fix : fixed conflicts with other lazy loading plugins
  • Update : FooGallery client side 1.2.3
Download this release

Release Info

Developer bradvin
Plugin Icon 128x128 FooGallery – Image Gallery WordPress Plugin
Version 1.7.6
Comparing to
See all releases

Code changes from version 1.6.17 to 1.7.6

.gitignore CHANGED
@@ -1,7 +1,6 @@
1
  *~
2
  apigen
3
  documentation
4
- dist
5
  vendor
6
  node_modules
7
  .DS_Store
1
  *~
2
  apigen
3
  documentation
 
4
  vendor
5
  node_modules
6
  .DS_Store
README.txt CHANGED
@@ -1,9 +1,9 @@
1
  === FooGallery - Image Gallery WordPress Plugin ===
2
- Contributors: bradvin, steveush, fooplugins
3
  Donate link: http://fooplugins.com
4
  Tags: gallery, image gallery, photo gallery, responsive, album, media gallery, masonry gallery, portfolio, justified gallery, video gallery, photography, youtube gallery
5
  Requires at least: 3.9
6
- Tested up to: 5.1
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -58,6 +58,7 @@ https://youtu.be/zY8eSTEIwpU
58
  * Video Support - [demo](https://foo.gallery/demos/video-gallery-demos/)
59
  * Media Tags and Categories
60
  * Gallery Filtering using Media Tags or Categories - [demo](https://foo.gallery/demos/filtering-demos/)
 
61
  * Polaroid PRO Gallery Template - [demo](https://foo.gallery/demos/polaroid-pro-image-gallery/)
62
  * Grid PRO Gallery Template - [demo](https://foo.gallery/demos/grid-pro-demo/)
63
  * Slider PRO Gallery Template - [demo](https://foo.gallery/demos/slider-pro/)
@@ -143,6 +144,20 @@ Update now to get all the latest features, bug fixes and improvements!
143
 
144
  == Changelog ==
145
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  = 1.6.17 =
147
  * IMPORTANT : Please update to address a security vulnerability.
148
  * Fix : Security vulnerability
1
  === FooGallery - Image Gallery WordPress Plugin ===
2
+ Contributors: bradvin, steveush, fooplugins, freemius
3
  Donate link: http://fooplugins.com
4
  Tags: gallery, image gallery, photo gallery, responsive, album, media gallery, masonry gallery, portfolio, justified gallery, video gallery, photography, youtube gallery
5
  Requires at least: 3.9
6
+ Tested up to: 5.1.1
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
58
  * Video Support - [demo](https://foo.gallery/demos/video-gallery-demos/)
59
  * Media Tags and Categories
60
  * Gallery Filtering using Media Tags or Categories - [demo](https://foo.gallery/demos/filtering-demos/)
61
+ * 12 CSS thumbnail filters (Instagram) - [demo](https://foo.gallery/demos/thumbnail-filters/)
62
  * Polaroid PRO Gallery Template - [demo](https://foo.gallery/demos/polaroid-pro-image-gallery/)
63
  * Grid PRO Gallery Template - [demo](https://foo.gallery/demos/grid-pro-demo/)
64
  * Slider PRO Gallery Template - [demo](https://foo.gallery/demos/slider-pro/)
144
 
145
  == Changelog ==
146
 
147
+ = 1.7.6 =
148
+ * Fix : fixed issues with paging introduced in 1.7.4
149
+ * Fix : fixed conflicts with other lazy loading plugins
150
+ * Update : FooGallery client side 1.2.3
151
+
152
+ = 1.7.4 =
153
+ * New : Major performance enhancements for all galleries
154
+ * New : Performance enhancements with FooBox
155
+ * New : Force HTTPS setting for migrated sites
156
+ * New : FooGallery Gutenberg block gallery search
157
+ * Fix : fixed scroll blocking violation warnings in dev tools
158
+ * Fix : fixed Wistia video import issues
159
+ * Update : FooGallery client side 1.2.2
160
+
161
  = 1.6.17 =
162
  * IMPORTANT : Please update to address a security vulnerability.
163
  * Fix : Security vulnerability
assets/1x1.gif ADDED
Binary file
extensions/default-templates/shared/css/foogallery.css CHANGED
@@ -80,7 +80,6 @@ only screen and (min-resolution: 2.25dppx) {
80
  outline: 0;
81
  text-decoration: none;
82
  z-index: 4;
83
- -moz-box-shadow: none;
84
  box-shadow: none;
85
  }
86
  .foogallery .fg-thumb:hover,
@@ -88,7 +87,6 @@ only screen and (min-resolution: 2.25dppx) {
88
  border: none;
89
  outline: 0;
90
  text-decoration: none;
91
- -moz-box-shadow: none;
92
  box-shadow: none;
93
  }
94
  .foogallery .fg-image-wrap {
@@ -1176,8 +1174,6 @@ only screen and (min-resolution: 2.25dppx) {
1176
  transform: translateX(-100%);
1177
  }
1178
  .fg-paging-container, .fg-paging-container *, .fg-paging-container *:before, .fg-paging-container *:after {
1179
- -webkit-box-sizing: border-box;
1180
- -moz-box-sizing: border-box;
1181
  box-sizing: border-box;
1182
  }
1183
  .fg-paging-container {
@@ -1268,22 +1264,22 @@ only screen and (min-resolution: 2.25dppx) {
1268
  }
1269
  .fg-paging-container.fg-light .fg-dot-item .fg-dot-link {
1270
  background-color: #eee;
1271
- border-color: #9e9e9e;
1272
  }
1273
  .fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link {
1274
- border-color: #8a8a8a;
1275
  }
1276
  .fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before,
1277
  .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,
1278
  .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before {
1279
  background-color: #666;
1280
- border-color: #8a8a8a;
1281
  }
1282
  .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,
1283
  .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover,
1284
  .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus {
1285
  background-color: #eee;
1286
- border-color: #9e9e9e;
1287
  opacity: 0.5;
1288
  }
1289
 
@@ -1402,8 +1398,6 @@ only screen and (min-resolution: 2.25dppx) {
1402
  }
1403
  /* Base styles */
1404
  .fg-masonry * {
1405
- -webkit-box-sizing: border-box;
1406
- -moz-box-sizing: border-box;
1407
  box-sizing: border-box;
1408
  }
1409
  .foogallery.fg-masonry.fg-center {
@@ -1936,7 +1930,6 @@ only screen and (min-resolution: 2.25dppx) {
1936
  .foogallery.fg-preset.fg-polaroid .fg-item {
1937
  -webkit-backface-visibility: hidden;
1938
  backface-visibility: hidden;
1939
- -webkit-transition: -webkit-transform 0.35s, background-color 0.65s;
1940
  transition: transform 0.35s, background-color 0.65s;
1941
  }
1942
  .foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n+1) {
@@ -2064,7 +2057,7 @@ only screen and (min-resolution: 2.25dppx) {
2064
  }
2065
 
2066
  .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item {
2067
- position: relative;
2068
  visibility: visible;
2069
  opacity: 1;
2070
  border: none;
@@ -2073,6 +2066,9 @@ only screen and (min-resolution: 2.25dppx) {
2073
  box-shadow: none;
2074
  max-width: 100%;
2075
  }
 
 
 
2076
  .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb img {
2077
  display: block;
2078
  max-width: 100%;
80
  outline: 0;
81
  text-decoration: none;
82
  z-index: 4;
 
83
  box-shadow: none;
84
  }
85
  .foogallery .fg-thumb:hover,
87
  border: none;
88
  outline: 0;
89
  text-decoration: none;
 
90
  box-shadow: none;
91
  }
92
  .foogallery .fg-image-wrap {
1174
  transform: translateX(-100%);
1175
  }
1176
  .fg-paging-container, .fg-paging-container *, .fg-paging-container *:before, .fg-paging-container *:after {
 
 
1177
  box-sizing: border-box;
1178
  }
1179
  .fg-paging-container {
1264
  }
1265
  .fg-paging-container.fg-light .fg-dot-item .fg-dot-link {
1266
  background-color: #eee;
1267
+ border-color: #9d9d9d;
1268
  }
1269
  .fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link {
1270
+ border-color: #888;
1271
  }
1272
  .fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before,
1273
  .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,
1274
  .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before {
1275
  background-color: #666;
1276
+ border-color: #888;
1277
  }
1278
  .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,
1279
  .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover,
1280
  .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus {
1281
  background-color: #eee;
1282
+ border-color: #9d9d9d;
1283
  opacity: 0.5;
1284
  }
1285
 
1398
  }
1399
  /* Base styles */
1400
  .fg-masonry * {
 
 
1401
  box-sizing: border-box;
1402
  }
1403
  .foogallery.fg-masonry.fg-center {
1930
  .foogallery.fg-preset.fg-polaroid .fg-item {
1931
  -webkit-backface-visibility: hidden;
1932
  backface-visibility: hidden;
 
1933
  transition: transform 0.35s, background-color 0.65s;
1934
  }
1935
  .foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n+1) {
2057
  }
2058
 
2059
  .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item {
2060
+ position: absolute;
2061
  visibility: visible;
2062
  opacity: 1;
2063
  border: none;
2066
  box-shadow: none;
2067
  max-width: 100%;
2068
  }
2069
+ .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item:first-of-type {
2070
+ position: relative;
2071
+ }
2072
  .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb img {
2073
  display: block;
2074
  max-width: 100%;
extensions/default-templates/shared/css/foogallery.min.css CHANGED
@@ -1 +1 @@
1
- .foogallery,.foogallery *{box-sizing:border-box}.foogallery{display:block;z-index:1;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;position:relative;line-height:0;font-size:0;width:100%;max-width:100%}.foogallery .fg-item{display:inline-block;position:relative;background-color:transparent;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.foogallery .fg-item-inner{display:block;position:relative;visibility:hidden;overflow:hidden;opacity:0;z-index:3;margin:0;border:solid 0 transparent}.foogallery .fg-item.fg-error,.foogallery .fg-item.fg-loading{background:no-repeat center}.foogallery .fg-item.fg-error{background-image:url(../img/image.png)}@media only screen and (-o-min-device-pixel-ratio:5/4),only screen and (-webkit-min-device-pixel-ratio:1.25),only screen and (min-device-pixel-ratio:1.25),only screen and (min-resolution:1.25dppx){.foogallery .fg-item.fg-error{background-image:url(../img/image@2x.png)}}@media only screen and (-o-min-device-pixel-ratio:9/4),only screen and (-webkit-min-device-pixel-ratio:2.25),only screen and (min-device-pixel-ratio:2.25),only screen and (min-resolution:2.25dppx){.foogallery .fg-item.fg-error{background-image:url(../img/image@3x.png)}}.foogallery .fg-item.fg-loaded{z-index:4}.foogallery .fg-loaded .fg-item-inner{visibility:visible;opacity:1;z-index:5}.foogallery .fg-error .fg-item-inner{pointer-events:none;cursor:default}.foogallery .fg-thumb{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:4;-moz-box-shadow:none;box-shadow:none}.foogallery .fg-thumb:focus,.foogallery .fg-thumb:hover{border:none;outline:0;text-decoration:none;-moz-box-shadow:none;box-shadow:none}.foogallery .fg-image-wrap{display:block;position:relative}.foogallery .fg-image{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:5;max-width:none;height:auto;margin:0}.foogallery .fg-loaded .fg-thumb{z-index:6}.foogallery .fg-loaded .fg-image{z-index:7}.foogallery.fg-light .fg-item-inner{background-color:#fff;color:#333;border-color:#fff}.foogallery.fg-dark .fg-item-inner{background-color:#333;color:#fff;border-color:#333}.foogallery.fg-light .fg-item.fg-error,.foogallery.fg-light .fg-item.fg-idle,.foogallery.fg-light .fg-item.fg-loading{background-color:#eee;box-shadow:inset 0 0 0 1px #ddd}.foogallery.fg-dark .fg-item.fg-error,.foogallery.fg-dark .fg-item.fg-idle,.foogallery.fg-dark .fg-item.fg-loading{background-color:#444;box-shadow:inset 0 0 0 1px #333}.foogallery.fg-border-thin .fg-item-inner{border-width:4px}.foogallery.fg-border-medium .fg-item-inner{border-width:10px}.foogallery.fg-border-thick .fg-item-inner{border-width:16px}.foogallery.fg-light.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-dark.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-light.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-light.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-light.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-shadow-inset-small .fg-thumb:after{display:block;content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:7}.foogallery.fg-dark.fg-shadow-inset-small .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.foogallery.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%}.foogallery.fg-round-small .fg-item,.foogallery.fg-round-small .fg-item-inner{border-radius:5px}.foogallery.fg-round-medium .fg-item,.foogallery.fg-round-medium .fg-item-inner{border-radius:10px}.foogallery.fg-round-large .fg-item,.foogallery.fg-round-large .fg-item-inner{border-radius:15px}.foogallery.fg-round-full .fg-item,.foogallery.fg-round-full .fg-item-inner{border-radius:50%}.foogallery .fg-loader{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:1em;height:1em;font-size:5px;visibility:hidden;opacity:0}.foogallery .fg-loading .fg-loader{visibility:visible;opacity:1}.fg-loading-default .fg-loader{border-radius:50%;text-indent:-9999em;-webkit-animation:loading-default 1.1s infinite ease;animation:loading-default 1.1s infinite ease}@-webkit-keyframes loading-default{0%,100%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,1),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.5),-1.8em -1.8em 0 0 rgba(130,130,130,.7)}12.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.7),1.8em -1.8em 0 0 rgba(130,130,130,1),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.5)}25%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.5),1.8em -1.8em 0 0 rgba(130,130,130,.7),2.5em 0 0 0 rgba(130,130,130,1),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}37.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.5),2.5em 0 0 0 rgba(130,130,130,.7),1.75em 1.75em 0 0 rgba(130,130,130,1),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}50%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.5),1.75em 1.75em 0 0 rgba(130,130,130,.7),0 2.5em 0 0 rgba(130,130,130,1),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}62.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.5),0 2.5em 0 0 rgba(130,130,130,.7),-1.8em 1.8em 0 0 rgba(130,130,130,1),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}75%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.5),-1.8em 1.8em 0 0 rgba(130,130,130,.7),-2.6em 0 0 0 rgba(130,130,130,1),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}87.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.5),-2.6em 0 0 0 rgba(130,130,130,.7),-1.8em -1.8em 0 0 rgba(130,130,130,1)}}@keyframes loading-default{0%,100%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,1),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.5),-1.8em -1.8em 0 0 rgba(130,130,130,.7)}12.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.7),1.8em -1.8em 0 0 rgba(130,130,130,1),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.5)}25%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.5),1.8em -1.8em 0 0 rgba(130,130,130,.7),2.5em 0 0 0 rgba(130,130,130,1),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}37.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.5),2.5em 0 0 0 rgba(130,130,130,.7),1.75em 1.75em 0 0 rgba(130,130,130,1),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}50%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.5),1.75em 1.75em 0 0 rgba(130,130,130,.7),0 2.5em 0 0 rgba(130,130,130,1),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}62.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.5),0 2.5em 0 0 rgba(130,130,130,.7),-1.8em 1.8em 0 0 rgba(130,130,130,1),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}75%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.5),-1.8em 1.8em 0 0 rgba(130,130,130,.7),-2.6em 0 0 0 rgba(130,130,130,1),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}87.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.5),-2.6em 0 0 0 rgba(130,130,130,.7),-1.8em -1.8em 0 0 rgba(130,130,130,1)}}.fg-loading-bars .fg-loader,.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{background:rgba(130,130,130,1);-webkit-animation:loading-bars 1s infinite ease-in-out;animation:loading-bars 1s infinite ease-in-out;width:1em;height:4em}.fg-loading-bars .fg-loader{color:rgba(130,130,130,1);text-indent:-9999em;font-size:4px;-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{position:absolute;top:0;content:''}.fg-loading-bars .fg-loader:before{left:-1.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-bars .fg-loader:after{left:1.5em}@-webkit-keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}@keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}.fg-loading-trail .fg-loader{color:#828282;font-size:20px;text-indent:-9999em;overflow:hidden;border-radius:50%;-webkit-animation:loading-trail-1 1.7s infinite ease,loading-trail-2 1.7s infinite ease;animation:loading-trail-1 1.7s infinite ease,loading-trail-2 1.7s infinite ease}@-webkit-keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@-webkit-keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.fg-loading-pulse .fg-loader,.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{border-radius:50%;width:2.5em;height:2.5em;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation:loading-pulse 1.8s infinite ease-in-out;animation:loading-pulse 1.8s infinite ease-in-out}.fg-loading-pulse .fg-loader{color:#828282;font-size:4px;text-indent:-9999em;transform:translateX(-50%) translateY(-150%);-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{content:'';position:absolute;top:0}.fg-loading-pulse .fg-loader:before{left:-3.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-pulse .fg-loader:after{left:3.5em}@-webkit-keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}.fg-loading-dots .fg-loader{color:#828282;font-size:5px;border-radius:50%;text-indent:-9999em;-webkit-animation:loading-dots 1.3s infinite linear;animation:loading-dots 1.3s infinite linear}@-webkit-keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}.fg-loading-partial .fg-loader,.fg-loading-partial .fg-loader:after{border-radius:50%;width:10em;height:10em}.fg-loading-partial .fg-loader{font-size:4px;text-indent:-9999em;border-top:1.1em solid rgba(130,130,130,.2);border-right:1.1em solid rgba(130,130,130,.2);border-bottom:1.1em solid rgba(130,130,130,.2);border-left:1.1em solid #828282;-webkit-animation:loading-partial 1.1s infinite linear;animation:loading-partial 1.1s infinite linear}@-webkit-keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.foogallery.fg-loaded-drop .fg-item,.foogallery.fg-loaded-fade-in .fg-item,.foogallery.fg-loaded-flip .fg-item,.foogallery.fg-loaded-fly .fg-item,.foogallery.fg-loaded-scale-up .fg-item,.foogallery.fg-loaded-slide-down .fg-item,.foogallery.fg-loaded-slide-left .fg-item,.foogallery.fg-loaded-slide-right .fg-item,.foogallery.fg-loaded-slide-up .fg-item,.foogallery.fg-loaded-swing-down .fg-item{transition-timing-function:ease;transition-duration:650ms;transition-property:background-color,transform}.foogallery.fg-loaded-drop .fg-item-inner,.foogallery.fg-loaded-fade-in .fg-item-inner,.foogallery.fg-loaded-flip .fg-item-inner,.foogallery.fg-loaded-fly .fg-item-inner,.foogallery.fg-loaded-scale-up .fg-item-inner,.foogallery.fg-loaded-slide-down .fg-item-inner,.foogallery.fg-loaded-slide-left .fg-item-inner,.foogallery.fg-loaded-slide-right .fg-item-inner,.foogallery.fg-loaded-slide-up .fg-item-inner,.foogallery.fg-loaded-swing-down .fg-item-inner{transition-timing-function:ease;transition-duration:650ms}.foogallery.fg-loaded-drop .fg-item.fg-loaded,.foogallery.fg-loaded-flip .fg-item.fg-loaded,.foogallery.fg-loaded-fly .fg-item.fg-loaded,.foogallery.fg-loaded-swing-down .fg-item.fg-loaded{perspective:1300px}.foogallery.fg-loaded-fade-in .fg-item-inner{transition-property:visibility,opacity}.foogallery .fg-caption{visibility:hidden;opacity:0;background-color:rgba(0,0,0,.6);color:#fff;position:absolute;z-index:8;width:100%;max-height:100%;overflow:hidden;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.3;border:none;text-align:center;cursor:pointer}.foogallery .fg-caption a{text-decoration:none;color:#fff;border-bottom:1px solid #fff}.foogallery .fg-caption a:hover{border-bottom:none}.foogallery .fg-caption-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:400;padding:5px}.foogallery .fg-caption-desc{padding:5px}.foogallery .fg-caption-title+.fg-caption-desc{padding-top:0}.foogallery.fg-caption-always .fg-caption .fg-caption-inner:before{display:none}.foogallery.fg-caption-always .fg-item.fg-loaded .fg-caption{left:0;bottom:0;transition-timing-function:ease;transition-duration:.3s;transition-property:visibility,opacity;visibility:visible;opacity:1;text-align:left}.foogallery.fg-caption-hover .fg-caption .fg-caption-inner{width:100%;max-height:100%;position:absolute;top:50%;left:0;transform:translateY(-50%)}.foogallery.fg-caption-hover .fg-item.fg-loaded .fg-thumb:before{display:none}.foogallery.fg-hover-circle-plus .fg-thumb:before,.foogallery.fg-hover-external .fg-thumb:before,.foogallery.fg-hover-eye .fg-thumb:before,.foogallery.fg-hover-plus .fg-thumb:before,.foogallery.fg-hover-tint .fg-thumb:before,.foogallery.fg-hover-zoom .fg-thumb:before,.foogallery.fg-hover-zoom2 .fg-thumb:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{content:"";display:block;position:absolute;visibility:hidden;opacity:0;top:0;bottom:0;left:0;right:0;z-index:8;background:rgba(0,0,0,.5) no-repeat center center;background-size:32px 32px}.foogallery.fg-hover-circle-plus .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-circle-plus .fg-thumb:focus:before,.foogallery.fg-hover-external .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-external .fg-thumb:focus:before,.foogallery.fg-hover-eye .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-eye .fg-thumb:focus:before,.foogallery.fg-hover-plus .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-plus .fg-thumb:focus:before,.foogallery.fg-hover-tint .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-tint .fg-thumb:focus:before,.foogallery.fg-hover-zoom .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-zoom .fg-thumb:focus:before,.foogallery.fg-hover-zoom2 .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-zoom2 .fg-thumb:focus:before,.foogallery.fg-hover-zoom3 .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-zoom3 .fg-thumb:focus:before{visibility:visible;opacity:1}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-tint .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-caption-inner:before{content:"";display:inline-block;position:relative;width:32px;height:32px;margin:10px 0 5px 0;background:transparent no-repeat center center;background-size:32px 32px;vertical-align:middle}.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-thumb:before{background-image:url(../img/zoom.png)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-thumb:before{background-image:url(../img/zoom2.png)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{background-image:url(../img/zoom3.png)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-thumb:before{background-image:url(../img/plus.png)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-thumb:before{background-image:url(../img/circle-plus.png)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-thumb:before{background-image:url(../img/eye.png)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-thumb:before{background-image:url(../img/external.png)}@media only screen and (-o-min-device-pixel-ratio:5/4),only screen and (-webkit-min-device-pixel-ratio:1.25),only screen and (min-device-pixel-ratio:1.25),only screen and (min-resolution:1.25dppx){.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-thumb:before{background-image:url(../img/zoom@2x.png)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-thumb:before{background-image:url(../img/zoom2@2x.png)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{background-image:url(../img/zoom3@2x.png)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-thumb:before{background-image:url(../img/plus@2x.png)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-thumb:before{background-image:url(../img/circle-plus@2x.png)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-thumb:before{background-image:url(../img/eye@2x.png)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-thumb:before{background-image:url(../img/external@2x.png)}}@media only screen and (-o-min-device-pixel-ratio:9/4),only screen and (-webkit-min-device-pixel-ratio:2.25),only screen and (min-device-pixel-ratio:2.25),only screen and (min-resolution:2.25dppx){.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-thumb:before{background-image:url(../img/zoom@3x.png)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-thumb:before{background-image:url(../img/zoom2@3x.png)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{background-image:url(../img/zoom3@3x.png)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-thumb:before{background-image:url(../img/plus@3x.png)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-thumb:before{background-image:url(../img/circle-plus@3x.png)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-thumb:before{background-image:url(../img/eye@3x.png)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-thumb:before{background-image:url(../img/external@3x.png)}}.foogallery.fg-caption-hover.fg-hover-colorize .fg-caption,.foogallery.fg-caption-hover.fg-hover-fade .fg-caption,.foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption,.foogallery.fg-caption-hover.fg-hover-instant .fg-caption,.foogallery.fg-caption-hover.fg-hover-push .fg-caption,.foogallery.fg-caption-hover.fg-hover-scale .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-down .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-caption,.foogallery.fg-hover-colorize .fg-image,.foogallery.fg-hover-colorize .fg-thumb:before,.foogallery.fg-hover-fade .fg-thumb:before,.foogallery.fg-hover-grayscale .fg-image,.foogallery.fg-hover-grayscale .fg-thumb:before,.foogallery.fg-hover-instant .fg-thumb:before,.foogallery.fg-hover-push .fg-thumb,.foogallery.fg-hover-scale .fg-item,.foogallery.fg-hover-scale .fg-thumb:before,.foogallery.fg-hover-slide-down .fg-thumb:before,.foogallery.fg-hover-slide-left .fg-thumb:before,.foogallery.fg-hover-slide-right .fg-thumb:before,.foogallery.fg-hover-slide-up .fg-thumb:before{transition-timing-function:ease;transition-duration:.3s}.foogallery.fg-hover-colorize .fg-image{filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'saturate\' values=\'0\'/></filter></svg>#grayscale");filter:gray;-webkit-filter:grayscale(100%);-webkit-transition-property:-webkit-filter;transition-property:filter}.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image{-webkit-filter:none;filter:none}.foogallery.fg-caption-hover.fg-hover-colorize .fg-caption,.foogallery.fg-hover-colorize .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-hover-grayscale .fg-image{-webkit-filter:none;filter:none;-webkit-transition-property:-webkit-filter;transition-property:filter}.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image{-webkit-filter:grayscale(1);-webkit-filter:grayscale(100%);filter:grayscale(100%);filter:gray;opacity:1}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption,.foogallery.fg-hover-grayscale .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:none}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transform:translateX(100%);visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-thumb{transition-property:transform}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-caption{transform:translateY(0)}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb,.foogallery.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb{transform:translateX(-100%)}.foogallery.fg-hover-scale .fg-item{transition-property:transform;z-index:4}.foogallery.fg-hover-scale .fg-item:hover{transform:scale(1.048);z-index:10}.foogallery.fg-caption-hover.fg-hover-scale .fg-caption,.foogallery.fg-hover-scale .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-scale .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-thumb:before,.foogallery.fg-hover-slide-left .fg-loaded .fg-thumb:before,.foogallery.fg-hover-slide-right .fg-loaded .fg-thumb:before,.foogallery.fg-hover-slide-up .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:transform,background-color,opacity,visibility;visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-thumb:before{transform:translateY(0) translateX(0)}.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-up .fg-loaded .fg-thumb:before{transform:translateY(100%)}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-thumb:before{transform:translateY(-100%)}.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-hover-slide-left .fg-loaded .fg-thumb:before{transform:translateX(100%)}.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-hover-slide-right .fg-loaded .fg-thumb:before{transform:translateX(-100%)}.fg-paging-container,.fg-paging-container *,.fg-paging-container :after,.fg-paging-container :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.fg-paging-container{display:block;padding:15px;text-align:center;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fg-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.fg-paging-container .fg-dot-item,.fg-paging-container .fg-dots{display:inline-block;margin:0;padding:0;outline:0;list-style:none}.fg-paging-container .fg-dot-item .fg-dot-link{display:inline-block;margin:3px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none;border:1px solid transparent;position:relative;border-radius:50%;padding:0;font-size:0;outline:0;color:transparent;box-shadow:none}.fg-paging-container .fg-dot-item .fg-dot-link:before{content:"";background-color:transparent;border:1px solid transparent;display:block;border-radius:50%;width:9px;height:9px;padding:0;margin:2px}.fg-paging-container .fg-dot-item .fg-dot-link:active,.fg-paging-container .fg-dot-item .fg-dot-link:focus,.fg-paging-container .fg-dot-item .fg-dot-link:hover{text-decoration:none;box-shadow:none;outline:0}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container .fg-dot-item.fg-selected .fg-dot-link{cursor:not-allowed;pointer-events:none}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link{cursor:not-allowed;pointer-events:none;outline:0}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link{background-color:#eee;border-color:#9e9e9e}.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link{border-color:#8a8a8a}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#666;border-color:#8a8a8a}.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#eee;border-color:#9e9e9e;opacity:.5}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link{background-color:#666;border-color:#333}.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link{border-color:#444}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#333;border-color:#444}.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#666;border-color:#333;opacity:.5}.fg-default:after{content:'';display:block;clear:both}.fg-default .fg-item,.fg-default .fg-item-inner,.fg-default .fg-thumb{display:inline-block;vertical-align:top;max-width:100%}.fg-default .fg-image{border-radius:0;display:block;max-width:100%;height:auto;margin:0;padding:0}.fg-default .fg-image{vertical-align:top}.fg-default.fg-left{text-align:left}.fg-default.fg-center{text-align:center}.fg-default.fg-right{text-align:right}.fg-default.fg-gutter-5{padding-left:5px;margin-bottom:-5px}.fg-default.fg-gutter-5 .fg-item{margin-right:5px;margin-bottom:5px}.fg-default.fg-gutter-10{padding-left:10px;margin-bottom:-10px}.fg-default.fg-gutter-10 .fg-item{margin-right:10px;margin-bottom:10px}.fg-default.fg-gutter-15{padding-left:15px;margin-bottom:-15px}.fg-default.fg-gutter-15 .fg-item{margin-right:15px;margin-bottom:15px}.fg-default.fg-gutter-20{padding-left:20px;margin-bottom:-20px}.fg-default.fg-gutter-20 .fg-item{margin-right:20px;margin-bottom:20px}.fg-default.fg-gutter-25{padding-left:25px;margin-bottom:-25px}.fg-default.fg-gutter-25 .fg-item{margin-right:25px;margin-bottom:25px}.fg-masonry *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.foogallery.fg-masonry.fg-center{margin:0 auto}.fg-masonry .fg-thumb{display:block}.fg-masonry.fg-masonry-fixed .fg-thumb{display:inline-block}.fg-masonry.fg-masonry-fixed .fg-image{max-width:100%}.fg-masonry .fg-column-width{display:inline-block;visibility:hidden;height:0;border:solid 0 transparent}.fg-masonry.fg-masonry-2col .fg-image,.fg-masonry.fg-masonry-3col .fg-image,.fg-masonry.fg-masonry-4col .fg-image,.fg-masonry.fg-masonry-5col .fg-image{width:100%;height:auto;max-width:100%}.fg-masonry .fg-item{line-height:0;font-size:0}.fg-masonry.fg-masonry-fixed .fg-column-width,.fg-masonry.fg-masonry-fixed .fg-item{max-width:100%}.fg-masonry.fg-masonry-2col .fg-item{margin-bottom:1%;width:49%}.fg-masonry.fg-masonry-2col .fg-column-width{width:49%}.fg-masonry.fg-masonry-2col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-item{margin-bottom:3%;width:47%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-column-width{width:47%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-masonry-3col .fg-item{margin-bottom:1%;width:32%}.fg-masonry.fg-masonry-3col .fg-column-width{width:32%}.fg-masonry.fg-masonry-3col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-item{margin-bottom:0;width:33%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-column-width{width:33%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-item{margin-bottom:3%;width:30%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-column-width{width:30%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-masonry-4col .fg-item{margin-bottom:1%;width:24%}.fg-masonry.fg-masonry-4col .fg-column-width{width:24%}.fg-masonry.fg-masonry-4col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item{margin-bottom:0;width:25%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width{width:25%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item{margin-bottom:3%;width:22%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width{width:22%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:19%}.fg-masonry.fg-masonry-5col .fg-column-width{width:19%}.fg-masonry.fg-masonry-5col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:20%}.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:20%}.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:17%}.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:17%}.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:3%}@media screen and (max-width:720px){.fg-masonry.fg-masonry-4col .fg-item,.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:32%}.fg-masonry.fg-masonry-4col .fg-column-width,.fg-masonry.fg-masonry-5col .fg-column-width{width:32%}.fg-masonry.fg-masonry-4col .fg-gutter-width,.fg-masonry.fg-masonry-5col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:33%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:33%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:30%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:30%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:480px){.fg-masonry.fg-masonry-3col .fg-item,.fg-masonry.fg-masonry-4col .fg-item,.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:49%}.fg-masonry.fg-masonry-3col .fg-column-width,.fg-masonry.fg-masonry-4col .fg-column-width,.fg-masonry.fg-masonry-5col .fg-column-width{width:49%}.fg-masonry.fg-masonry-3col .fg-gutter-width,.fg-masonry.fg-masonry-4col .fg-gutter-width,.fg-masonry.fg-masonry-5col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:47%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:47%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:320px){.fg-masonry.fg-masonry-2col .fg-item,.fg-masonry.fg-masonry-3col .fg-item,.fg-masonry.fg-masonry-4col .fg-item,.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:100%}.fg-masonry.fg-masonry-2col .fg-column-width,.fg-masonry.fg-masonry-3col .fg-column-width,.fg-masonry.fg-masonry-4col .fg-column-width,.fg-masonry.fg-masonry-5col .fg-column-width{width:100%}.fg-masonry.fg-masonry-2col .fg-gutter-width,.fg-masonry.fg-masonry-3col .fg-gutter-width,.fg-masonry.fg-masonry-4col .fg-gutter-width,.fg-masonry.fg-masonry-5col .fg-gutter-width{width:0}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:0}}.foogallery.fg-border-thin .fg-column-width{border-width:4px}.foogallery.fg-border-medium .fg-column-width{border-width:10px}.foogallery.fg-border-thick .fg-column-width{border-width:16px}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner{display:block;position:relative;max-height:none;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-hover .fg-item-inner .fg-thumb:before{display:block}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-masonry.fg-captions-bottom .fg-caption-desc,.fg-masonry.fg-captions-bottom .fg-caption-title{text-align:left}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption,.fg-masonry.fg-captions-bottom.fg-light .fg-caption{color:#828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a:hover,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a:hover{border-bottom:none}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{color:#222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{color:#fff}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-masonry.fg-captions-bottom .fg-caption{border-width:10px}.fg-masonry.fg-captions-bottom .fg-caption-title+.fg-caption-desc{margin-top:4px}.fg-masonry.fg-captions-bottom.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.fg-masonry.fg-captions-bottom.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption{border-width:16px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-justified{box-sizing:border-box;position:relative}.foogallery.fg-justified .fg-image,.foogallery.fg-justified .fg-item,.foogallery.fg-justified .fg-item-inner,.foogallery.fg-justified .fg-thumb{box-sizing:border-box;display:block;margin:0;padding:0}.fg-justified .fg-item{visibility:visible;position:absolute}.fg-justified .fg-item-inner{position:relative;width:100%;height:100%}.fg-justified .fg-thumb{position:relative;overflow:hidden}.fg-justified .fg-image{z-index:1}.fg-justified .fg-item.fg-positioned .fg-image-wrap,.fg-justified .fg-item.fg-positioned .fg-thumb{width:100%;height:100%}.fg-justified .fg-item.fg-positioned .fg-image{width:100%;height:auto;min-height:100%;top:50%;transform:translateY(-50%)}.fg-simple_portfolio{box-sizing:border-box;position:relative;font-size:16px;margin:0 auto;padding:0;width:100%}.fg-simple_portfolio .fg-item{position:absolute;display:inline-block;margin:0;padding:0;outline:0}.fg-simple_portfolio .fg-image,.fg-simple_portfolio .fg-item-inner,.fg-simple_portfolio .fg-thumb{display:block;margin:0;padding:0;outline:0}.fg-simple_portfolio .fg-item-inner{position:relative;width:100%;height:100%}.fg-simple_portfolio .fg-thumb{box-sizing:border-box;display:block;margin:0;padding:0;border:none;outline:0;position:relative;overflow:hidden}.fg-simple_portfolio .fg-item.fg-positioned .fg-image{width:100%;height:auto}.fg-simple_portfolio .fg-image{z-index:1}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent}.foogallery.fg-simple_portfolio .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner{display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-simple_portfolio.fg-caption-hover .fg-item-inner .fg-thumb:before{display:block}.foogallery.fg-simple_portfolio.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-simple_portfolio .fg-caption-title{text-align:left}.fg-simple_portfolio .fg-caption-desc{text-align:left}.fg-simple_portfolio.fg-dark .fg-caption,.fg-simple_portfolio.fg-light .fg-caption{color:#828282}.fg-simple_portfolio.fg-dark .fg-caption a,.fg-simple_portfolio.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-simple_portfolio.fg-dark .fg-caption a:hover,.fg-simple_portfolio.fg-light .fg-caption a:hover{border-bottom:none}.fg-simple_portfolio.fg-light .fg-caption-title,.fg-simple_portfolio.fg-light .fg-caption-title a{color:#222}.fg-simple_portfolio.fg-dark .fg-caption-title,.fg-simple_portfolio.fg-dark .fg-caption-title a{color:#fff}.fg-simple_portfolio.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-simple_portfolio.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-simple_portfolio.fg-captions-top .fg-item.fg-positioned .fg-thumb{position:absolute;bottom:0;left:0}.fg-simple_portfolio .fg-caption{border-width:0}.fg-simple_portfolio .fg-caption-title+.fg-caption-desc{margin-top:4px}.fg-simple_portfolio.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.fg-simple_portfolio.fg-captions-top.fg-border-thin .fg-caption{border-width:4px 4px 10px 4px}.fg-simple_portfolio.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.fg-simple_portfolio.fg-border-thick .fg-caption{border-width:16px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 16px 0}.fg-simple_portfolio.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.foogallery.fg-preset.fg-polaroid .fg-item{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .35s,background-color .65s;transition:transform .35s,background-color .65s}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n+1){-webkit-transform:rotate(3deg);transform:rotate(3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n){-webkit-transform:rotate(-3deg);transform:rotate(-3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(3n){-webkit-transform:rotate(1deg);transform:rotate(1deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(5n){-webkit-transform:rotate(-2deg);transform:rotate(-2deg)}.foogallery.fg-preset.fg-polaroid .fg-item:hover{-webkit-transform:rotate(0);transform:rotate(0)}.foogallery.fg-preset.fg-polaroid .fg-caption{position:relative;width:auto;font-family:"Segoe Print Regular",-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}.foogallery.fg-preset.fg-polaroid .fg-caption-inner,.foogallery.fg-preset.fg-polaroid .fg-caption-title{position:relative;width:auto}.foogallery.fg-preset.fg-polaroid .fg-caption-title{text-align:center}.foogallery.fg-preset.fg-polaroid .fg-caption-desc{display:none}.foogallery.fg-light.fg-preset.fg-polaroid .fg-caption-title,.foogallery.fg-preset.fg-polaroid .fg-caption-title{color:#333}.foogallery.fg-dark.fg-preset.fg-polaroid .fg-caption-title{color:#fff}.foogallery.fg-preset.fg-polaroid .fg-caption{border-style:solid;border-color:transparent;border-width:10px}.foogallery.fg-preset.fg-polaroid .fg-caption-title+.fg-caption-desc{margin-top:4px}.foogallery.fg-preset.fg-polaroid.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thin .fg-caption{border-width:4px 4px 10px 4px}.foogallery.fg-preset.fg-polaroid.fg-border-medium .fg-caption{border-width:10px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption{border-width:16px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 16px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-image-viewer{display:block;font-family:'Open Sans','Helvetica Neue',Arial,sans-serif}.fg-image-viewer.fg-left{text-align:left}.fg-image-viewer.fg-center{text-align:center}.fg-image-viewer.fg-right{text-align:right}.fiv-inner{position:relative;display:inline-block;max-width:100%;overflow:hidden;z-index:6}.fiv-inner .fiv-inner-container{position:relative;overflow:hidden;max-width:100%;border-style:solid;border-width:0;border-bottom-width:4px;z-index:5}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:active,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:hover,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:visited{position:relative;display:block;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item{position:relative;visibility:visible;opacity:1;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb img{display:block;max-width:100%;height:auto;border:none;outline:0;text-decoration:none}.fg-image-viewer .fiv-inner .fiv-ctrls{display:block;text-align:center;font-size:14px;border-style:solid;line-height:34px}.fg-image-viewer .fiv-inner .fiv-ctrls:after{content:'';display:block;clear:both}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count{display:inline-block;font-weight:400;margin:0}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:none;min-width:80px;position:relative;overflow:hidden;transition:background-color .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{display:block;position:absolute;font-size:24px;line-height:30px;top:0;left:0;width:100%;transform:translateY(0);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover:before{transform:translateY(-100%)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev span{display:block;width:100%;transform:translateY(100%);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover span{transform:translateY(0)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{float:left}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{content:'\2190'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next{float:right}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before{content:'\2192'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count span{margin:0 4px}/*!* Theme - Default (Light) *!*//*!* Theme - Dark *!*/.foogallery.fg-image-viewer.fg-caption-always .fg-item-inner .fg-caption{padding:0;border:none;background:#000;background:-moz-linear-gradient(left,rgba(0,0,0,.8) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,0) 100%);background:-webkit-linear-gradient(left,rgba(0,0,0,.8) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,0) 100%);background:linear-gradient(to right,rgba(0,0,0,.8) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,0) 100%)}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-desc{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title+.fg-caption-desc{padding:0 10px 10px 10px}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-light .fiv-inner .fiv-inner-container{background-color:#fff;color:#333;border-color:#fff}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#f2f2f2}.fg-image-viewer.fg-light .fiv-next,.fg-image-viewer.fg-light .fiv-prev{box-shadow:inset 0 0 0 1px #ddd}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-dark .fiv-inner .fiv-inner-container{background-color:#333;color:#fff;border-color:#333}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#444}.fg-image-viewer.fg-dark .fiv-next,.fg-image-viewer.fg-dark .fiv-prev{box-shadow:inset 0 0 0 1px #222}.foogallery.fg-image-viewer.fg-border-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin .fg-item-inner{border-width:0}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-inner-container{border-width:4px}.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-inner-container{border-width:10px}.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-inner-container{border-width:16px}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-ctrls{border-top-width:1px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-round-small .fiv-inner{border-radius:5px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-round-medium .fiv-inner{border-radius:10px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-round-large .fiv-inner{border-radius:15px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-full .fiv-inner,.foogallery.fg-image-viewer.fg-round-full .fiv-next,.foogallery.fg-image-viewer.fg-round-full .fiv-prev{border-radius:50%}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fg-item-inner{box-shadow:none}.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fiv-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fiv-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fiv-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-thumbnail,.foogallery.fg-thumbnail.fg-center{text-align:center}.foogallery.fg-thumbnail.fg-left{text-align:left}.foogallery.fg-thumbnail.fg-right{text-align:right}.foogallery.fg-thumbnail.fg-float-left{float:left;width:auto}.foogallery.fg-thumbnail.fg-float-right{float:right;width:auto}.foogallery.fg-thumbnail .fg-item{display:inline-block;vertical-align:top;max-width:100%}.foogallery.fg-thumbnail .fg-image{max-width:100%}.foogallery.fg-thumbnail .fg-st-hidden{display:none}
1
+ .foogallery,.foogallery *{box-sizing:border-box}.foogallery{display:block;z-index:1;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;position:relative;line-height:0;font-size:0;width:100%;max-width:100%}.foogallery .fg-item{display:inline-block;position:relative;background-color:transparent;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.foogallery .fg-item-inner{display:block;position:relative;visibility:hidden;overflow:hidden;opacity:0;z-index:3;margin:0;border:solid 0 transparent}.foogallery .fg-item.fg-error,.foogallery .fg-item.fg-loading{background:no-repeat center}.foogallery .fg-item.fg-error{background-image:url(../img/image.png)}@media only screen and (-o-min-device-pixel-ratio:5/4),only screen and (-webkit-min-device-pixel-ratio:1.25),only screen and (min-device-pixel-ratio:1.25),only screen and (min-resolution:1.25dppx){.foogallery .fg-item.fg-error{background-image:url(../img/image@2x.png)}}@media only screen and (-o-min-device-pixel-ratio:9/4),only screen and (-webkit-min-device-pixel-ratio:2.25),only screen and (min-device-pixel-ratio:2.25),only screen and (min-resolution:2.25dppx){.foogallery .fg-item.fg-error{background-image:url(../img/image@3x.png)}}.foogallery .fg-item.fg-loaded{z-index:4}.foogallery .fg-loaded .fg-item-inner{visibility:visible;opacity:1;z-index:5}.foogallery .fg-error .fg-item-inner{pointer-events:none;cursor:default}.foogallery .fg-thumb{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:4;box-shadow:none}.foogallery .fg-thumb:focus,.foogallery .fg-thumb:hover{border:none;outline:0;text-decoration:none;box-shadow:none}.foogallery .fg-image-wrap{display:block;position:relative}.foogallery .fg-image{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:5;max-width:none;height:auto;margin:0}.foogallery .fg-loaded .fg-thumb{z-index:6}.foogallery .fg-loaded .fg-image{z-index:7}.foogallery.fg-light .fg-item-inner{background-color:#fff;color:#333;border-color:#fff}.foogallery.fg-dark .fg-item-inner{background-color:#333;color:#fff;border-color:#333}.foogallery.fg-light .fg-item.fg-error,.foogallery.fg-light .fg-item.fg-idle,.foogallery.fg-light .fg-item.fg-loading{background-color:#eee;box-shadow:inset 0 0 0 1px #ddd}.foogallery.fg-dark .fg-item.fg-error,.foogallery.fg-dark .fg-item.fg-idle,.foogallery.fg-dark .fg-item.fg-loading{background-color:#444;box-shadow:inset 0 0 0 1px #333}.foogallery.fg-border-thin .fg-item-inner{border-width:4px}.foogallery.fg-border-medium .fg-item-inner{border-width:10px}.foogallery.fg-border-thick .fg-item-inner{border-width:16px}.foogallery.fg-light.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-dark.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-light.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-light.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-light.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-shadow-inset-small .fg-thumb:after{display:block;content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:7}.foogallery.fg-dark.fg-shadow-inset-small .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.foogallery.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%}.foogallery.fg-round-small .fg-item,.foogallery.fg-round-small .fg-item-inner{border-radius:5px}.foogallery.fg-round-medium .fg-item,.foogallery.fg-round-medium .fg-item-inner{border-radius:10px}.foogallery.fg-round-large .fg-item,.foogallery.fg-round-large .fg-item-inner{border-radius:15px}.foogallery.fg-round-full .fg-item,.foogallery.fg-round-full .fg-item-inner{border-radius:50%}.foogallery .fg-loader{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:1em;height:1em;font-size:5px;visibility:hidden;opacity:0}.foogallery .fg-loading .fg-loader{visibility:visible;opacity:1}.fg-loading-default .fg-loader{border-radius:50%;text-indent:-9999em;-webkit-animation:loading-default 1.1s infinite ease;animation:loading-default 1.1s infinite ease}@-webkit-keyframes loading-default{0%,100%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,1),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.5),-1.8em -1.8em 0 0 rgba(130,130,130,.7)}12.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.7),1.8em -1.8em 0 0 rgba(130,130,130,1),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.5)}25%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.5),1.8em -1.8em 0 0 rgba(130,130,130,.7),2.5em 0 0 0 rgba(130,130,130,1),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}37.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.5),2.5em 0 0 0 rgba(130,130,130,.7),1.75em 1.75em 0 0 rgba(130,130,130,1),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}50%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.5),1.75em 1.75em 0 0 rgba(130,130,130,.7),0 2.5em 0 0 rgba(130,130,130,1),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}62.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.5),0 2.5em 0 0 rgba(130,130,130,.7),-1.8em 1.8em 0 0 rgba(130,130,130,1),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}75%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.5),-1.8em 1.8em 0 0 rgba(130,130,130,.7),-2.6em 0 0 0 rgba(130,130,130,1),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}87.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.5),-2.6em 0 0 0 rgba(130,130,130,.7),-1.8em -1.8em 0 0 rgba(130,130,130,1)}}@keyframes loading-default{0%,100%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,1),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.5),-1.8em -1.8em 0 0 rgba(130,130,130,.7)}12.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.7),1.8em -1.8em 0 0 rgba(130,130,130,1),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.5)}25%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.5),1.8em -1.8em 0 0 rgba(130,130,130,.7),2.5em 0 0 0 rgba(130,130,130,1),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}37.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.5),2.5em 0 0 0 rgba(130,130,130,.7),1.75em 1.75em 0 0 rgba(130,130,130,1),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}50%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.5),1.75em 1.75em 0 0 rgba(130,130,130,.7),0 2.5em 0 0 rgba(130,130,130,1),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}62.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.5),0 2.5em 0 0 rgba(130,130,130,.7),-1.8em 1.8em 0 0 rgba(130,130,130,1),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}75%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.5),-1.8em 1.8em 0 0 rgba(130,130,130,.7),-2.6em 0 0 0 rgba(130,130,130,1),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}87.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.5),-2.6em 0 0 0 rgba(130,130,130,.7),-1.8em -1.8em 0 0 rgba(130,130,130,1)}}.fg-loading-bars .fg-loader,.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{background:rgba(130,130,130,1);-webkit-animation:loading-bars 1s infinite ease-in-out;animation:loading-bars 1s infinite ease-in-out;width:1em;height:4em}.fg-loading-bars .fg-loader{color:rgba(130,130,130,1);text-indent:-9999em;font-size:4px;-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{position:absolute;top:0;content:''}.fg-loading-bars .fg-loader:before{left:-1.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-bars .fg-loader:after{left:1.5em}@-webkit-keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}@keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}.fg-loading-trail .fg-loader{color:#828282;font-size:20px;text-indent:-9999em;overflow:hidden;border-radius:50%;-webkit-animation:loading-trail-1 1.7s infinite ease,loading-trail-2 1.7s infinite ease;animation:loading-trail-1 1.7s infinite ease,loading-trail-2 1.7s infinite ease}@-webkit-keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@-webkit-keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.fg-loading-pulse .fg-loader,.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{border-radius:50%;width:2.5em;height:2.5em;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation:loading-pulse 1.8s infinite ease-in-out;animation:loading-pulse 1.8s infinite ease-in-out}.fg-loading-pulse .fg-loader{color:#828282;font-size:4px;text-indent:-9999em;transform:translateX(-50%) translateY(-150%);-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{content:'';position:absolute;top:0}.fg-loading-pulse .fg-loader:before{left:-3.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-pulse .fg-loader:after{left:3.5em}@-webkit-keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}.fg-loading-dots .fg-loader{color:#828282;font-size:5px;border-radius:50%;text-indent:-9999em;-webkit-animation:loading-dots 1.3s infinite linear;animation:loading-dots 1.3s infinite linear}@-webkit-keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}.fg-loading-partial .fg-loader,.fg-loading-partial .fg-loader:after{border-radius:50%;width:10em;height:10em}.fg-loading-partial .fg-loader{font-size:4px;text-indent:-9999em;border-top:1.1em solid rgba(130,130,130,.2);border-right:1.1em solid rgba(130,130,130,.2);border-bottom:1.1em solid rgba(130,130,130,.2);border-left:1.1em solid #828282;-webkit-animation:loading-partial 1.1s infinite linear;animation:loading-partial 1.1s infinite linear}@-webkit-keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.foogallery.fg-loaded-drop .fg-item,.foogallery.fg-loaded-fade-in .fg-item,.foogallery.fg-loaded-flip .fg-item,.foogallery.fg-loaded-fly .fg-item,.foogallery.fg-loaded-scale-up .fg-item,.foogallery.fg-loaded-slide-down .fg-item,.foogallery.fg-loaded-slide-left .fg-item,.foogallery.fg-loaded-slide-right .fg-item,.foogallery.fg-loaded-slide-up .fg-item,.foogallery.fg-loaded-swing-down .fg-item{transition-timing-function:ease;transition-duration:650ms;transition-property:background-color,transform}.foogallery.fg-loaded-drop .fg-item-inner,.foogallery.fg-loaded-fade-in .fg-item-inner,.foogallery.fg-loaded-flip .fg-item-inner,.foogallery.fg-loaded-fly .fg-item-inner,.foogallery.fg-loaded-scale-up .fg-item-inner,.foogallery.fg-loaded-slide-down .fg-item-inner,.foogallery.fg-loaded-slide-left .fg-item-inner,.foogallery.fg-loaded-slide-right .fg-item-inner,.foogallery.fg-loaded-slide-up .fg-item-inner,.foogallery.fg-loaded-swing-down .fg-item-inner{transition-timing-function:ease;transition-duration:650ms}.foogallery.fg-loaded-drop .fg-item.fg-loaded,.foogallery.fg-loaded-flip .fg-item.fg-loaded,.foogallery.fg-loaded-fly .fg-item.fg-loaded,.foogallery.fg-loaded-swing-down .fg-item.fg-loaded{perspective:1300px}.foogallery.fg-loaded-fade-in .fg-item-inner{transition-property:visibility,opacity}.foogallery .fg-caption{visibility:hidden;opacity:0;background-color:rgba(0,0,0,.6);color:#fff;position:absolute;z-index:8;width:100%;max-height:100%;overflow:hidden;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.3;border:none;text-align:center;cursor:pointer}.foogallery .fg-caption a{text-decoration:none;color:#fff;border-bottom:1px solid #fff}.foogallery .fg-caption a:hover{border-bottom:none}.foogallery .fg-caption-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:400;padding:5px}.foogallery .fg-caption-desc{padding:5px}.foogallery .fg-caption-title+.fg-caption-desc{padding-top:0}.foogallery.fg-caption-always .fg-caption .fg-caption-inner:before{display:none}.foogallery.fg-caption-always .fg-item.fg-loaded .fg-caption{left:0;bottom:0;transition-timing-function:ease;transition-duration:.3s;transition-property:visibility,opacity;visibility:visible;opacity:1;text-align:left}.foogallery.fg-caption-hover .fg-caption .fg-caption-inner{width:100%;max-height:100%;position:absolute;top:50%;left:0;transform:translateY(-50%)}.foogallery.fg-caption-hover .fg-item.fg-loaded .fg-thumb:before{display:none}.foogallery.fg-hover-circle-plus .fg-thumb:before,.foogallery.fg-hover-external .fg-thumb:before,.foogallery.fg-hover-eye .fg-thumb:before,.foogallery.fg-hover-plus .fg-thumb:before,.foogallery.fg-hover-tint .fg-thumb:before,.foogallery.fg-hover-zoom .fg-thumb:before,.foogallery.fg-hover-zoom2 .fg-thumb:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{content:"";display:block;position:absolute;visibility:hidden;opacity:0;top:0;bottom:0;left:0;right:0;z-index:8;background:rgba(0,0,0,.5) no-repeat center center;background-size:32px 32px}.foogallery.fg-hover-circle-plus .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-circle-plus .fg-thumb:focus:before,.foogallery.fg-hover-external .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-external .fg-thumb:focus:before,.foogallery.fg-hover-eye .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-eye .fg-thumb:focus:before,.foogallery.fg-hover-plus .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-plus .fg-thumb:focus:before,.foogallery.fg-hover-tint .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-tint .fg-thumb:focus:before,.foogallery.fg-hover-zoom .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-zoom .fg-thumb:focus:before,.foogallery.fg-hover-zoom2 .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-zoom2 .fg-thumb:focus:before,.foogallery.fg-hover-zoom3 .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-zoom3 .fg-thumb:focus:before{visibility:visible;opacity:1}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-tint .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-caption-inner:before{content:"";display:inline-block;position:relative;width:32px;height:32px;margin:10px 0 5px 0;background:transparent no-repeat center center;background-size:32px 32px;vertical-align:middle}.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-thumb:before{background-image:url(../img/zoom.png)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-thumb:before{background-image:url(../img/zoom2.png)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{background-image:url(../img/zoom3.png)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-thumb:before{background-image:url(../img/plus.png)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-thumb:before{background-image:url(../img/circle-plus.png)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-thumb:before{background-image:url(../img/eye.png)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-thumb:before{background-image:url(../img/external.png)}@media only screen and (-o-min-device-pixel-ratio:5/4),only screen and (-webkit-min-device-pixel-ratio:1.25),only screen and (min-device-pixel-ratio:1.25),only screen and (min-resolution:1.25dppx){.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-thumb:before{background-image:url(../img/zoom@2x.png)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-thumb:before{background-image:url(../img/zoom2@2x.png)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{background-image:url(../img/zoom3@2x.png)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-thumb:before{background-image:url(../img/plus@2x.png)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-thumb:before{background-image:url(../img/circle-plus@2x.png)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-thumb:before{background-image:url(../img/eye@2x.png)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-thumb:before{background-image:url(../img/external@2x.png)}}@media only screen and (-o-min-device-pixel-ratio:9/4),only screen and (-webkit-min-device-pixel-ratio:2.25),only screen and (min-device-pixel-ratio:2.25),only screen and (min-resolution:2.25dppx){.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-thumb:before{background-image:url(../img/zoom@3x.png)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-thumb:before{background-image:url(../img/zoom2@3x.png)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{background-image:url(../img/zoom3@3x.png)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-thumb:before{background-image:url(../img/plus@3x.png)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-thumb:before{background-image:url(../img/circle-plus@3x.png)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-thumb:before{background-image:url(../img/eye@3x.png)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-thumb:before{background-image:url(../img/external@3x.png)}}.foogallery.fg-caption-hover.fg-hover-colorize .fg-caption,.foogallery.fg-caption-hover.fg-hover-fade .fg-caption,.foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption,.foogallery.fg-caption-hover.fg-hover-instant .fg-caption,.foogallery.fg-caption-hover.fg-hover-push .fg-caption,.foogallery.fg-caption-hover.fg-hover-scale .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-down .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-caption,.foogallery.fg-hover-colorize .fg-image,.foogallery.fg-hover-colorize .fg-thumb:before,.foogallery.fg-hover-fade .fg-thumb:before,.foogallery.fg-hover-grayscale .fg-image,.foogallery.fg-hover-grayscale .fg-thumb:before,.foogallery.fg-hover-instant .fg-thumb:before,.foogallery.fg-hover-push .fg-thumb,.foogallery.fg-hover-scale .fg-item,.foogallery.fg-hover-scale .fg-thumb:before,.foogallery.fg-hover-slide-down .fg-thumb:before,.foogallery.fg-hover-slide-left .fg-thumb:before,.foogallery.fg-hover-slide-right .fg-thumb:before,.foogallery.fg-hover-slide-up .fg-thumb:before{transition-timing-function:ease;transition-duration:.3s}.foogallery.fg-hover-colorize .fg-image{filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'saturate\' values=\'0\'/></filter></svg>#grayscale");filter:gray;-webkit-filter:grayscale(100%);-webkit-transition-property:-webkit-filter;transition-property:filter}.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image{-webkit-filter:none;filter:none}.foogallery.fg-caption-hover.fg-hover-colorize .fg-caption,.foogallery.fg-hover-colorize .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-hover-grayscale .fg-image{-webkit-filter:none;filter:none;-webkit-transition-property:-webkit-filter;transition-property:filter}.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image{-webkit-filter:grayscale(1);-webkit-filter:grayscale(100%);filter:grayscale(100%);filter:gray;opacity:1}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption,.foogallery.fg-hover-grayscale .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:none}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transform:translateX(100%);visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-thumb{transition-property:transform}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-caption{transform:translateY(0)}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb,.foogallery.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb{transform:translateX(-100%)}.foogallery.fg-hover-scale .fg-item{transition-property:transform;z-index:4}.foogallery.fg-hover-scale .fg-item:hover{transform:scale(1.048);z-index:10}.foogallery.fg-caption-hover.fg-hover-scale .fg-caption,.foogallery.fg-hover-scale .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-scale .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-thumb:before,.foogallery.fg-hover-slide-left .fg-loaded .fg-thumb:before,.foogallery.fg-hover-slide-right .fg-loaded .fg-thumb:before,.foogallery.fg-hover-slide-up .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:transform,background-color,opacity,visibility;visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-thumb:before{transform:translateY(0) translateX(0)}.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-up .fg-loaded .fg-thumb:before{transform:translateY(100%)}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-thumb:before{transform:translateY(-100%)}.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-hover-slide-left .fg-loaded .fg-thumb:before{transform:translateX(100%)}.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-hover-slide-right .fg-loaded .fg-thumb:before{transform:translateX(-100%)}.fg-paging-container,.fg-paging-container *,.fg-paging-container :after,.fg-paging-container :before{box-sizing:border-box}.fg-paging-container{display:block;padding:15px;text-align:center;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fg-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.fg-paging-container .fg-dot-item,.fg-paging-container .fg-dots{display:inline-block;margin:0;padding:0;outline:0;list-style:none}.fg-paging-container .fg-dot-item .fg-dot-link{display:inline-block;margin:3px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none;border:1px solid transparent;position:relative;border-radius:50%;padding:0;font-size:0;outline:0;color:transparent;box-shadow:none}.fg-paging-container .fg-dot-item .fg-dot-link:before{content:"";background-color:transparent;border:1px solid transparent;display:block;border-radius:50%;width:9px;height:9px;padding:0;margin:2px}.fg-paging-container .fg-dot-item .fg-dot-link:active,.fg-paging-container .fg-dot-item .fg-dot-link:focus,.fg-paging-container .fg-dot-item .fg-dot-link:hover{text-decoration:none;box-shadow:none;outline:0}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container .fg-dot-item.fg-selected .fg-dot-link{cursor:not-allowed;pointer-events:none}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link{cursor:not-allowed;pointer-events:none;outline:0}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link{background-color:#eee;border-color:#9d9d9d}.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link{border-color:#888}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#666;border-color:#888}.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#eee;border-color:#9d9d9d;opacity:.5}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link{background-color:#666;border-color:#333}.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link{border-color:#444}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#333;border-color:#444}.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#666;border-color:#333;opacity:.5}.fg-default:after{content:'';display:block;clear:both}.fg-default .fg-item,.fg-default .fg-item-inner,.fg-default .fg-thumb{display:inline-block;vertical-align:top;max-width:100%}.fg-default .fg-image{border-radius:0;display:block;max-width:100%;height:auto;margin:0;padding:0}.fg-default .fg-image{vertical-align:top}.fg-default.fg-left{text-align:left}.fg-default.fg-center{text-align:center}.fg-default.fg-right{text-align:right}.fg-default.fg-gutter-5{padding-left:5px;margin-bottom:-5px}.fg-default.fg-gutter-5 .fg-item{margin-right:5px;margin-bottom:5px}.fg-default.fg-gutter-10{padding-left:10px;margin-bottom:-10px}.fg-default.fg-gutter-10 .fg-item{margin-right:10px;margin-bottom:10px}.fg-default.fg-gutter-15{padding-left:15px;margin-bottom:-15px}.fg-default.fg-gutter-15 .fg-item{margin-right:15px;margin-bottom:15px}.fg-default.fg-gutter-20{padding-left:20px;margin-bottom:-20px}.fg-default.fg-gutter-20 .fg-item{margin-right:20px;margin-bottom:20px}.fg-default.fg-gutter-25{padding-left:25px;margin-bottom:-25px}.fg-default.fg-gutter-25 .fg-item{margin-right:25px;margin-bottom:25px}.fg-masonry *{box-sizing:border-box}.foogallery.fg-masonry.fg-center{margin:0 auto}.fg-masonry .fg-thumb{display:block}.fg-masonry.fg-masonry-fixed .fg-thumb{display:inline-block}.fg-masonry.fg-masonry-fixed .fg-image{max-width:100%}.fg-masonry .fg-column-width{display:inline-block;visibility:hidden;height:0;border:solid 0 transparent}.fg-masonry.fg-masonry-2col .fg-image,.fg-masonry.fg-masonry-3col .fg-image,.fg-masonry.fg-masonry-4col .fg-image,.fg-masonry.fg-masonry-5col .fg-image{width:100%;height:auto;max-width:100%}.fg-masonry .fg-item{line-height:0;font-size:0}.fg-masonry.fg-masonry-fixed .fg-column-width,.fg-masonry.fg-masonry-fixed .fg-item{max-width:100%}.fg-masonry.fg-masonry-2col .fg-item{margin-bottom:1%;width:49%}.fg-masonry.fg-masonry-2col .fg-column-width{width:49%}.fg-masonry.fg-masonry-2col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-item{margin-bottom:3%;width:47%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-column-width{width:47%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-masonry-3col .fg-item{margin-bottom:1%;width:32%}.fg-masonry.fg-masonry-3col .fg-column-width{width:32%}.fg-masonry.fg-masonry-3col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-item{margin-bottom:0;width:33%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-column-width{width:33%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-item{margin-bottom:3%;width:30%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-column-width{width:30%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-masonry-4col .fg-item{margin-bottom:1%;width:24%}.fg-masonry.fg-masonry-4col .fg-column-width{width:24%}.fg-masonry.fg-masonry-4col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item{margin-bottom:0;width:25%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width{width:25%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item{margin-bottom:3%;width:22%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width{width:22%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:19%}.fg-masonry.fg-masonry-5col .fg-column-width{width:19%}.fg-masonry.fg-masonry-5col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:20%}.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:20%}.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:17%}.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:17%}.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:3%}@media screen and (max-width:720px){.fg-masonry.fg-masonry-4col .fg-item,.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:32%}.fg-masonry.fg-masonry-4col .fg-column-width,.fg-masonry.fg-masonry-5col .fg-column-width{width:32%}.fg-masonry.fg-masonry-4col .fg-gutter-width,.fg-masonry.fg-masonry-5col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:33%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:33%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:30%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:30%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:480px){.fg-masonry.fg-masonry-3col .fg-item,.fg-masonry.fg-masonry-4col .fg-item,.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:49%}.fg-masonry.fg-masonry-3col .fg-column-width,.fg-masonry.fg-masonry-4col .fg-column-width,.fg-masonry.fg-masonry-5col .fg-column-width{width:49%}.fg-masonry.fg-masonry-3col .fg-gutter-width,.fg-masonry.fg-masonry-4col .fg-gutter-width,.fg-masonry.fg-masonry-5col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:47%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:47%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:320px){.fg-masonry.fg-masonry-2col .fg-item,.fg-masonry.fg-masonry-3col .fg-item,.fg-masonry.fg-masonry-4col .fg-item,.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:100%}.fg-masonry.fg-masonry-2col .fg-column-width,.fg-masonry.fg-masonry-3col .fg-column-width,.fg-masonry.fg-masonry-4col .fg-column-width,.fg-masonry.fg-masonry-5col .fg-column-width{width:100%}.fg-masonry.fg-masonry-2col .fg-gutter-width,.fg-masonry.fg-masonry-3col .fg-gutter-width,.fg-masonry.fg-masonry-4col .fg-gutter-width,.fg-masonry.fg-masonry-5col .fg-gutter-width{width:0}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:0}}.foogallery.fg-border-thin .fg-column-width{border-width:4px}.foogallery.fg-border-medium .fg-column-width{border-width:10px}.foogallery.fg-border-thick .fg-column-width{border-width:16px}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner{display:block;position:relative;max-height:none;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-hover .fg-item-inner .fg-thumb:before{display:block}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-masonry.fg-captions-bottom .fg-caption-desc,.fg-masonry.fg-captions-bottom .fg-caption-title{text-align:left}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption,.fg-masonry.fg-captions-bottom.fg-light .fg-caption{color:#828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a:hover,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a:hover{border-bottom:none}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{color:#222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{color:#fff}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-masonry.fg-captions-bottom .fg-caption{border-width:10px}.fg-masonry.fg-captions-bottom .fg-caption-title+.fg-caption-desc{margin-top:4px}.fg-masonry.fg-captions-bottom.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.fg-masonry.fg-captions-bottom.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption{border-width:16px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-justified{box-sizing:border-box;position:relative}.foogallery.fg-justified .fg-image,.foogallery.fg-justified .fg-item,.foogallery.fg-justified .fg-item-inner,.foogallery.fg-justified .fg-thumb{box-sizing:border-box;display:block;margin:0;padding:0}.fg-justified .fg-item{visibility:visible;position:absolute}.fg-justified .fg-item-inner{position:relative;width:100%;height:100%}.fg-justified .fg-thumb{position:relative;overflow:hidden}.fg-justified .fg-image{z-index:1}.fg-justified .fg-item.fg-positioned .fg-image-wrap,.fg-justified .fg-item.fg-positioned .fg-thumb{width:100%;height:100%}.fg-justified .fg-item.fg-positioned .fg-image{width:100%;height:auto;min-height:100%;top:50%;transform:translateY(-50%)}.fg-simple_portfolio{box-sizing:border-box;position:relative;font-size:16px;margin:0 auto;padding:0;width:100%}.fg-simple_portfolio .fg-item{position:absolute;display:inline-block;margin:0;padding:0;outline:0}.fg-simple_portfolio .fg-image,.fg-simple_portfolio .fg-item-inner,.fg-simple_portfolio .fg-thumb{display:block;margin:0;padding:0;outline:0}.fg-simple_portfolio .fg-item-inner{position:relative;width:100%;height:100%}.fg-simple_portfolio .fg-thumb{box-sizing:border-box;display:block;margin:0;padding:0;border:none;outline:0;position:relative;overflow:hidden}.fg-simple_portfolio .fg-item.fg-positioned .fg-image{width:100%;height:auto}.fg-simple_portfolio .fg-image{z-index:1}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent}.foogallery.fg-simple_portfolio .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner{display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-simple_portfolio.fg-caption-hover .fg-item-inner .fg-thumb:before{display:block}.foogallery.fg-simple_portfolio.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-simple_portfolio .fg-caption-title{text-align:left}.fg-simple_portfolio .fg-caption-desc{text-align:left}.fg-simple_portfolio.fg-dark .fg-caption,.fg-simple_portfolio.fg-light .fg-caption{color:#828282}.fg-simple_portfolio.fg-dark .fg-caption a,.fg-simple_portfolio.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-simple_portfolio.fg-dark .fg-caption a:hover,.fg-simple_portfolio.fg-light .fg-caption a:hover{border-bottom:none}.fg-simple_portfolio.fg-light .fg-caption-title,.fg-simple_portfolio.fg-light .fg-caption-title a{color:#222}.fg-simple_portfolio.fg-dark .fg-caption-title,.fg-simple_portfolio.fg-dark .fg-caption-title a{color:#fff}.fg-simple_portfolio.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-simple_portfolio.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-simple_portfolio.fg-captions-top .fg-item.fg-positioned .fg-thumb{position:absolute;bottom:0;left:0}.fg-simple_portfolio .fg-caption{border-width:0}.fg-simple_portfolio .fg-caption-title+.fg-caption-desc{margin-top:4px}.fg-simple_portfolio.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.fg-simple_portfolio.fg-captions-top.fg-border-thin .fg-caption{border-width:4px 4px 10px 4px}.fg-simple_portfolio.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.fg-simple_portfolio.fg-border-thick .fg-caption{border-width:16px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 16px 0}.fg-simple_portfolio.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.foogallery.fg-preset.fg-polaroid .fg-item{-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .35s,background-color .65s}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n+1){-webkit-transform:rotate(3deg);transform:rotate(3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n){-webkit-transform:rotate(-3deg);transform:rotate(-3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(3n){-webkit-transform:rotate(1deg);transform:rotate(1deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(5n){-webkit-transform:rotate(-2deg);transform:rotate(-2deg)}.foogallery.fg-preset.fg-polaroid .fg-item:hover{-webkit-transform:rotate(0);transform:rotate(0)}.foogallery.fg-preset.fg-polaroid .fg-caption{position:relative;width:auto;font-family:"Segoe Print Regular",-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}.foogallery.fg-preset.fg-polaroid .fg-caption-inner,.foogallery.fg-preset.fg-polaroid .fg-caption-title{position:relative;width:auto}.foogallery.fg-preset.fg-polaroid .fg-caption-title{text-align:center}.foogallery.fg-preset.fg-polaroid .fg-caption-desc{display:none}.foogallery.fg-light.fg-preset.fg-polaroid .fg-caption-title,.foogallery.fg-preset.fg-polaroid .fg-caption-title{color:#333}.foogallery.fg-dark.fg-preset.fg-polaroid .fg-caption-title{color:#fff}.foogallery.fg-preset.fg-polaroid .fg-caption{border-style:solid;border-color:transparent;border-width:10px}.foogallery.fg-preset.fg-polaroid .fg-caption-title+.fg-caption-desc{margin-top:4px}.foogallery.fg-preset.fg-polaroid.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thin .fg-caption{border-width:4px 4px 10px 4px}.foogallery.fg-preset.fg-polaroid.fg-border-medium .fg-caption{border-width:10px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption{border-width:16px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 16px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-image-viewer{display:block;font-family:'Open Sans','Helvetica Neue',Arial,sans-serif}.fg-image-viewer.fg-left{text-align:left}.fg-image-viewer.fg-center{text-align:center}.fg-image-viewer.fg-right{text-align:right}.fiv-inner{position:relative;display:inline-block;max-width:100%;overflow:hidden;z-index:6}.fiv-inner .fiv-inner-container{position:relative;overflow:hidden;max-width:100%;border-style:solid;border-width:0;border-bottom-width:4px;z-index:5}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:active,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:hover,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:visited{position:relative;display:block;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item{position:absolute;visibility:visible;opacity:1;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item:first-of-type{position:relative}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb img{display:block;max-width:100%;height:auto;border:none;outline:0;text-decoration:none}.fg-image-viewer .fiv-inner .fiv-ctrls{display:block;text-align:center;font-size:14px;border-style:solid;line-height:34px}.fg-image-viewer .fiv-inner .fiv-ctrls:after{content:'';display:block;clear:both}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count{display:inline-block;font-weight:400;margin:0}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:none;min-width:80px;position:relative;overflow:hidden;transition:background-color .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{display:block;position:absolute;font-size:24px;line-height:30px;top:0;left:0;width:100%;transform:translateY(0);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover:before{transform:translateY(-100%)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev span{display:block;width:100%;transform:translateY(100%);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover span{transform:translateY(0)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{float:left}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{content:'\2190'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next{float:right}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before{content:'\2192'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count span{margin:0 4px}/*!* Theme - Default (Light) *!*//*!* Theme - Dark *!*/.foogallery.fg-image-viewer.fg-caption-always .fg-item-inner .fg-caption{padding:0;border:none;background:#000;background:-moz-linear-gradient(left,rgba(0,0,0,.8) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,0) 100%);background:-webkit-linear-gradient(left,rgba(0,0,0,.8) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,0) 100%);background:linear-gradient(to right,rgba(0,0,0,.8) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,0) 100%)}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-desc{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title+.fg-caption-desc{padding:0 10px 10px 10px}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-light .fiv-inner .fiv-inner-container{background-color:#fff;color:#333;border-color:#fff}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#f2f2f2}.fg-image-viewer.fg-light .fiv-next,.fg-image-viewer.fg-light .fiv-prev{box-shadow:inset 0 0 0 1px #ddd}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-dark .fiv-inner .fiv-inner-container{background-color:#333;color:#fff;border-color:#333}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#444}.fg-image-viewer.fg-dark .fiv-next,.fg-image-viewer.fg-dark .fiv-prev{box-shadow:inset 0 0 0 1px #222}.foogallery.fg-image-viewer.fg-border-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin .fg-item-inner{border-width:0}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-inner-container{border-width:4px}.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-inner-container{border-width:10px}.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-inner-container{border-width:16px}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-ctrls{border-top-width:1px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-round-small .fiv-inner{border-radius:5px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-round-medium .fiv-inner{border-radius:10px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-round-large .fiv-inner{border-radius:15px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-full .fiv-inner,.foogallery.fg-image-viewer.fg-round-full .fiv-next,.foogallery.fg-image-viewer.fg-round-full .fiv-prev{border-radius:50%}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fg-item-inner{box-shadow:none}.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fiv-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fiv-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fiv-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-thumbnail,.foogallery.fg-thumbnail.fg-center{text-align:center}.foogallery.fg-thumbnail.fg-left{text-align:left}.foogallery.fg-thumbnail.fg-right{text-align:right}.foogallery.fg-thumbnail.fg-float-left{float:left;width:auto}.foogallery.fg-thumbnail.fg-float-right{float:right;width:auto}.foogallery.fg-thumbnail .fg-item{display:inline-block;vertical-align:top;max-width:100%}.foogallery.fg-thumbnail .fg-image{max-width:100%}.foogallery.fg-thumbnail .fg-st-hidden{display:none}
extensions/default-templates/shared/js/foogallery.js CHANGED
@@ -3177,7 +3177,20 @@
3177
  TOUCH = "ontouchstart" in window,
3178
  POINTER_IE10 = window.navigator.msPointerEnabled && !window.navigator.pointerEnabled && !TOUCH,
3179
  POINTER = (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) && !TOUCH,
3180
- USE_TOUCH = TOUCH || POINTER;
 
 
 
 
 
 
 
 
 
 
 
 
 
3181
 
3182
  _.Swipe = _utils.Class.extend(/** @lend FooGallery.Swipe */{
3183
  /**
@@ -3251,10 +3264,18 @@
3251
  * @function init
3252
  */
3253
  init: function(){
3254
- var self = this;
3255
- self.$el.on(self.events.start, {self: self}, self.onStart);
 
 
 
 
3256
  self.$el.on(self.events.move, {self: self}, self.onMove);
3257
- self.$el.on(self.events.end, {self: self}, self.onEnd);
 
 
 
 
3258
  if (_is.string(self.events.leave)) self.$el.on(self.events.leave, {self: self}, self.onEnd);
3259
  self.$el.data(DATA_NAME, self);
3260
  },
@@ -3264,10 +3285,18 @@
3264
  * @function destroy
3265
  */
3266
  destroy: function(){
3267
- var self = this;
3268
- self.$el.off(self.events.start, self.onStart);
 
 
 
 
3269
  self.$el.off(self.events.move, self.onMove);
3270
- self.$el.off(self.events.end, self.onEnd);
 
 
 
 
3271
  if (_is.string(self.events.leave)) self.$el.off(self.events.leave, self.onEnd);
3272
  self.$el.removeData(DATA_NAME);
3273
  },
@@ -4127,11 +4156,8 @@
4127
  self.initialized = true;
4128
 
4129
  // performed purely to re-check if any items need to be loaded after content has possibly shifted
4130
- self._check(200);
4131
- self._check(500);
4132
  self._check(1000);
4133
- self._check(2000);
4134
- self._check(5000);
4135
 
4136
  /**
4137
  * @summary Raised after the template is fully initialized and is ready to be interacted with.
@@ -4318,6 +4344,10 @@
4318
  return this.items.load(this.getAvailable());
4319
  },
4320
 
 
 
 
 
4321
  /**
4322
  * @summary Check if any available items need to be loaded and loads them.
4323
  * @memberof FooGallery.Template#
@@ -4450,11 +4480,12 @@
4450
  lazy: true,
4451
  viewport: 200,
4452
  items: [],
4453
- delay: 100,
 
4454
  throttle: 50,
4455
  timeout: 60000,
4456
- srcset: "data-srcset",
4457
- src: "data-src",
4458
  template: {}
4459
  }, {
4460
  container: "foogallery"
@@ -4470,11 +4501,12 @@
4470
  * @property {boolean} [lazy=true] - Whether or not to enable lazy loading of images.
4471
  * @property {number} [viewport=200] - The number of pixels to inflate the viewport by when checking to lazy load items.
4472
  * @property {(FooGallery.Item~Options[]|FooGallery.Item[]| string)} [items=[]] - An array of items to load when required. A url can be provided and the items will be fetched using an ajax call, the response should be a properly formatted JSON array of {@link FooGallery.Item~Options|item} object.
4473
- * @property {number} [delay=100] - The number of milliseconds to delay the initialization of a template.
 
4474
  * @property {number} [throttle=50] - The number of milliseconds to wait once scrolling has stopped before performing any work.
4475
  * @property {number} [timeout=60000] - The number of milliseconds to wait before forcing a timeout when loading items.
4476
- * @property {string} [src="data-src"] - The name of the attribute to retrieve an images src url from.
4477
- * @property {string} [srcset="data-srcset"] - The name of the attribute to retrieve an images srcset url from.
4478
  * @property {object} [template={}] - An object containing any additional custom options for the template.
4479
  * @property {FooGallery.Template~CSSClasses} [cls] - An object containing all CSS classes for the template.
4480
  * @property {FooGallery.Template~CSSSelectors} [sel] - An object containing all CSS selectors for the template.
@@ -4996,6 +5028,13 @@
4996
  */
4997
  self.$caption = null;
4998
 
 
 
 
 
 
 
 
4999
  /**
5000
  * @memberof FooGallery.Item#
5001
  * @name type
@@ -5112,14 +5151,6 @@
5112
  * @private
5113
  */
5114
  self._thumbUrl = null;
5115
- /**
5116
- * @summary The placeholder url for this item generated by calling the {@link FooGallery.Items#placeholder|placeholder} method.
5117
- * @memberof FooGallery.Item#
5118
- * @name _placeholder
5119
- * @type {string}
5120
- * @private
5121
- */
5122
- self._placeholder = null;
5123
  /**
5124
  * @summary This property is used to store the promise created when loading an item for the first time.
5125
  * @memberof FooGallery.Item#
@@ -5242,7 +5273,7 @@
5242
  if (self._undo.loader) {
5243
  self.$el.find(self.sel.loader).remove();
5244
  }
5245
- if (self._undo.placeholder && self.$image.prop("src") == self._placeholder) {
5246
  self.$image.removeAttr("src");
5247
  }
5248
  } else if (self.isCreated) {
@@ -5307,7 +5338,7 @@
5307
  var e = self.tmpl.raise("parse-item", [self, $el]);
5308
  if (!e.isDefaultPrevented() && (self.isCreated = $el.is(self.sel.elem))) {
5309
  self.isParsed = self.doParseItem($el);
5310
- self.fix();
5311
  // We don't load the attributes when parsing as they are only ever used to create an item and if you're parsing it's already created.
5312
  }
5313
  if (self.isParsed) {
@@ -5346,25 +5377,27 @@
5346
  self._undo.style = $el.attr("style") || "";
5347
 
5348
  self.$el = $el.data(_.dataItem, self);
5349
- self.$inner = self.$el.find(sel.inner);
5350
- self.$anchor = self.$el.find(sel.anchor).on("click.foogallery", {self: self}, self.onAnchorClick);
5351
  self.$image = self.$anchor.find(sel.image);
5352
- self.$caption = self.$el.find(sel.caption.elem).on("click.foogallery", {self: self}, self.onCaptionClick);
5353
  self.isAttached = self.$el.parent().length > 0;
5354
  self.isLoading = self.$el.is(sel.loading);
5355
  self.isLoaded = self.$el.is(sel.loaded);
5356
  self.isError = self.$el.is(sel.error);
5357
- self.id = self.$anchor.data("id") || self.id;
5358
- self.tags = self.$anchor.data("tags") || self.tags;
5359
- self.href = self.$anchor.attr("href") || self.href;
 
 
5360
  self.src = self.$image.attr(o.src) || self.src;
5361
  self.srcset = self.$image.attr(o.srcset) || self.srcset;
5362
  self.width = parseInt(self.$image.attr("width")) || self.width;
5363
  self.height = parseInt(self.$image.attr("height")) || self.height;
5364
  self.title = self.$image.attr("title") || self.title;
5365
  self.alt = self.$image.attr("alt") || self.alt;
5366
- self.caption = self.$anchor.data("title") || self.$anchor.data("captionTitle") || self.caption || self.title;
5367
- self.description = self.$anchor.data("description") || self.$anchor.data("captionDesc") || self.description || self.alt;
5368
  // if the caption or description are not set yet try fetching it from the html
5369
  if (_is.empty(self.caption)) self.caption = $.trim(self.$caption.find(sel.caption.title).html());
5370
  if (_is.empty(self.description)) self.description = $.trim(self.$caption.find(sel.caption.description).html());
@@ -5376,19 +5409,20 @@
5376
  self.$caption.find(sel.caption.description).html(self.description.substr(0, self.maxDescriptionLength) + "&hellip;");
5377
  }
5378
  // check if the item has a wrap
5379
- if (self.$anchor.find(sel.wrap).length === 0) {
5380
- self.$image.wrap($("<span/>", {"class": cls.wrap}));
 
5381
  self._undo.wrap = true;
5382
  }
5383
  // check if the item has a loader
5384
- if (self.$el.find(sel.loader).length === 0) {
5385
  self.$el.append($("<div/>", {"class": cls.loader}));
5386
  self._undo.loader = true;
5387
  }
5388
  // if the image has no src url then set the placeholder
5389
- if (_is.empty(self.$image.prop("src"))) {
5390
- self._placeholder = self.tmpl.items.placeholder(self.width, self.height);
5391
- self.$image.prop("src", self._placeholder);
5392
  self._undo.placeholder = true;
5393
  }
5394
  if (self.isCreated && self.isAttached && !self.isLoading && !self.isLoaded && !self.isError) {
@@ -5496,7 +5530,7 @@
5496
  }
5497
 
5498
  attr.image["class"] = cls.image;
5499
- attr.image["src"] = self.tmpl.items.placeholder(self.width, self.height);
5500
  attr.image[o.src] = self.src;
5501
  attr.image[o.srcset] = self.srcset;
5502
  attr.image["width"] = self.width;
@@ -5521,23 +5555,21 @@
5521
  attr.title["class"] = cls.title;
5522
  attr.description["class"] = cls.description;
5523
  if (hasTitle) {
5524
- var $title;
5525
  // enforce the max length for the caption
5526
  if (_is.number(self.maxCaptionLength) && self.maxCaptionLength > 0 && _is.string(self.caption) && self.caption.length > self.maxCaptionLength) {
5527
- $title = $("<div/>").attr(attr.title).html(self.caption.substr(0, self.maxCaptionLength) + "&hellip;");
5528
- } else {
5529
- $title = $("<div/>").attr(attr.title).html(self.caption);
5530
  }
 
5531
  $inner.append($title);
5532
  }
5533
  if (hasDesc) {
5534
- var $desc;
5535
  // enforce the max length for the description
5536
  if (_is.number(self.maxDescriptionLength) && self.maxDescriptionLength > 0 && _is.string(self.description) && self.description.length > self.maxDescriptionLength) {
5537
- $desc = $("<div/>").attr(attr.description).html(self.description.substr(0, self.maxDescriptionLength) + "&hellip;");
5538
- } else {
5539
- $desc = $("<div/>").attr(attr.description).html(self.description);
5540
  }
 
5541
  $inner.append($desc);
5542
  }
5543
  }
@@ -5603,7 +5635,7 @@
5603
  var e = self.tmpl.raise("append-item", [self]);
5604
  if (!e.isDefaultPrevented()) {
5605
  self.tmpl.$el.append(self.$el);
5606
- self.fix();
5607
  self.isAttached = true;
5608
  }
5609
  if (self.isAttached) {
@@ -5681,7 +5713,7 @@
5681
  var e = self.tmpl.raise("detach-item", [self]);
5682
  if (!e.isDefaultPrevented()) {
5683
  self.$el.detach();
5684
- self.unfix();
5685
  self.isAttached = false;
5686
  }
5687
  if (!self.isAttached) {
@@ -5727,7 +5759,7 @@
5727
  self.isLoading = false;
5728
  self.isLoaded = true;
5729
  self.$el.removeClass(cls.loading).addClass(cls.loaded);
5730
- self.unfix();
5731
  self.tmpl.raise("loaded-item", [self]);
5732
  def.resolve(self);
5733
  };
@@ -5758,11 +5790,10 @@
5758
  fix: function () {
5759
  var self = this;
5760
  if (self.tmpl == null) return self;
5761
- var e = self.tmpl.raise("fix-item", [self]);
5762
- if (!e.isDefaultPrevented() && self.isCreated && !self.isLoading && !self.isLoaded && !self.isError) {
5763
- var w = self.width, h = self.height;
5764
  // if we have a base width and height to work with
5765
- if (!isNaN(w) && !isNaN(h)) {
5766
  // figure out the max image width and calculate the height the image should be displayed as
5767
  var width = _is.fn(self.maxWidth) ? self.maxWidth(self) : self.$image.width();
5768
  if (width <= 0) width = w;
@@ -5782,8 +5813,7 @@
5782
  unfix: function () {
5783
  var self = this;
5784
  if (self.tmpl == null) return self;
5785
- var e = self.tmpl.raise("unfix-item", [self]);
5786
- if (!e.isDefaultPrevented() && self.isCreated) self.$image.css({width: '', height: ''});
5787
  return self;
5788
  },
5789
  /**
@@ -6136,14 +6166,6 @@
6136
  reset: function () {
6137
  this.setAvailable(this.all());
6138
  },
6139
- placeholder: function (width, height) {
6140
- if (this._canvas && this._canvas.toDataURL && _is.number(width) && _is.number(height)) {
6141
- this._canvas.width = width;
6142
- this._canvas.height = height;
6143
- return this._canvas.toDataURL();
6144
- }
6145
- return _.emptyImage;
6146
- },
6147
  /**
6148
  * @summary Filter the supplied `items` and return only those that can be loaded.
6149
  * @memberof FooGallery.Items#
@@ -6683,6 +6705,9 @@
6683
  available: function () {
6684
  return this.get(this.current);
6685
  },
 
 
 
6686
  controls: function (pageNumber) {
6687
  var self = this;
6688
  if (self.isValid(pageNumber)) {
@@ -6702,8 +6727,8 @@
6702
  pageNumber = self.number(pageNumber);
6703
  var index = pageNumber - 1;
6704
  self.tmpl.items.detach(self.tmpl.items.all());
6705
- self.tmpl.items.create(self._arr[index], true);
6706
  self.current = pageNumber;
 
6707
  },
6708
  get: function (pageNumber) {
6709
  var self = this;
@@ -7358,8 +7383,9 @@
7358
  (function($, _, _utils, _is){
7359
 
7360
  _.Justified = _utils.Class.extend({
7361
- construct: function(element, options){
7362
- this.$el = $(element);
 
7363
  this.options = $.extend(true, {}, _.Justified.defaults, options);
7364
  this._items = [];
7365
  this._lastRefresh = 0;
@@ -7392,37 +7418,17 @@
7392
  }
7393
  },
7394
  parse: function(){
7395
- var self = this, visible = self.$el.is(':visible'),
7396
- $test = $('<div/>', {'class': self.$el.attr('class')}).css({
7397
- position: 'absolute',
7398
- top: 0,
7399
- left: -9999,
7400
- visibility: 'hidden',
7401
- maxWidth: self.getContainerWidth()
7402
- }).appendTo('body');
7403
- self._items = self.$el.find(self.options.itemSelector).removeAttr("style").removeClass("fg-positioned").map(function(i, el){
7404
- var $item = $(el), width = 0, height = 0;
7405
- if (!visible){
7406
- var $clone = $item.clone();
7407
- $clone.appendTo($test);
7408
- width = $clone.outerWidth();
7409
- height = $clone.outerHeight();
7410
- } else {
7411
- width = $item.outerWidth();
7412
- height = $item.outerHeight();
7413
- }
7414
-
7415
  return {
7416
  index: i,
7417
- width: width,
7418
- height: height,
7419
  top: 0,
7420
  left: 0,
7421
- $item: $item
7422
  };
7423
- }).get();
7424
- $test.remove();
7425
- return self._items;
7426
  },
7427
  getMaxRowHeight: function() {
7428
  var self = this;
@@ -7649,7 +7655,7 @@
7649
  return rows;
7650
  },
7651
  onWindowResize: function(e){
7652
- e.data.self.layout();
7653
  }
7654
  });
7655
 
@@ -7669,11 +7675,11 @@
7669
  FooGallery.utils,
7670
  FooGallery.utils.is
7671
  );
7672
- (function($, _, _utils){
7673
 
7674
  _.JustifiedTemplate = _.Template.extend({
7675
  onPreInit: function(event, self){
7676
- self.justified = new _.Justified( self.$el.get(0), self.template );
7677
  },
7678
  onInit: function(event, self){
7679
  self.justified.init();
@@ -7690,14 +7696,13 @@
7690
  onLayout: function(event, self){
7691
  self.justified.layout( true );
7692
  },
7693
- onParsedItems: function(event, self, items){
7694
- if (self.initialized || self.initializing) self.justified.layout( true );
7695
- },
7696
- onAppendedItems: function(event, self, items){
7697
- if (self.initialized || self.initializing) self.justified.layout( true );
7698
  },
7699
- onDetachedItems: function(event, self, items){
7700
- if (self.initialized) self.justified.layout( true );
7701
  }
7702
  });
7703
 
@@ -7708,13 +7713,14 @@
7708
  })(
7709
  FooGallery.$,
7710
  FooGallery,
7711
- FooGallery.utils
7712
  );
7713
  (function($, _, _utils, _is){
7714
 
7715
  _.Portfolio = _utils.Class.extend({
7716
- construct: function(element, options){
7717
- this.$el = $(element);
 
7718
  this.options = $.extend(true, {}, _.Portfolio.defaults, options);
7719
  this._items = [];
7720
  this._lastWidth = 0;
@@ -7736,37 +7742,29 @@
7736
  visibility: 'hidden',
7737
  maxWidth: maxWidth
7738
  }).appendTo('body');
7739
- self._items = self.$el.find(".fg-item").removeAttr("style").removeClass("fg-positioned").map(function(i, el){
7740
- var $item = $(el),
7741
- $thumb = $item.find(".fg-thumb"),
7742
- $img = $item.find(".fg-image"),
7743
- width = parseFloat($img.attr("width")),
7744
- height = parseFloat($img.attr("height")),
7745
- iWidth = maxWidth < width ? maxWidth : width,
7746
- iHeight = maxWidth < width ? 'auto' : height;
7747
-
7748
- $item.find(".fg-caption").css("max-width", iWidth);
7749
- $img.css({ width: iWidth, height: iHeight });
7750
  if (!visible){
7751
- var $clone = $item.clone();
7752
  $clone.appendTo($test);
7753
  width = $clone.outerWidth();
7754
  height = $clone.outerHeight();
7755
  } else {
7756
- width = $item.outerWidth();
7757
- height = $item.outerHeight();
7758
  }
7759
- $img.css({ width: '', height: '' });
7760
  return {
7761
  index: i,
7762
  width: width,
7763
  height: height,
7764
  top: 0,
7765
  left: 0,
7766
- $item: $item,
7767
- $thumb: $thumb
7768
  };
7769
- }).get();
7770
  $test.remove();
7771
  return self._items;
7772
  },
@@ -7942,7 +7940,7 @@
7942
  this.portfolio = null;
7943
  },
7944
  onPreInit: function(event, self){
7945
- self.portfolio = new _.Portfolio( self.$el.get(0), self.template );
7946
  },
7947
  onInit: function(event, self){
7948
  self.portfolio.init();
@@ -7959,19 +7957,20 @@
7959
  onLayout: function(event, self){
7960
  self.portfolio.layout( true );
7961
  },
7962
- onParsedItems: function(event, self, items){
7963
- if (self.initialized || self.initializing) self.portfolio.layout( true );
7964
- },
7965
- onAppendedItems: function(event, self, items){
7966
- if (self.initialized || self.initializing) self.portfolio.layout( true );
7967
  },
7968
- onDetachedItems: function(event, self, items){
7969
- if (self.initialized) self.portfolio.layout( true );
7970
  }
7971
  });
7972
 
7973
  _.template.register("simple_portfolio", _.PortfolioTemplate, {
7974
- gutter: 40
 
 
7975
  }, {
7976
  container: "foogallery fg-simple_portfolio"
7977
  });
@@ -8252,7 +8251,11 @@
8252
  try {
8253
  // if the gallery is displayed within a FooBox do not trigger the post-load which would cause the lightbox to re-init
8254
  if (tmpl.$el.parents(".fbx-item").length > 0) return;
8255
- $("body").trigger("post-load");
 
 
 
 
8256
  } catch(err) {
8257
  console.error(err);
8258
  }
3177
  TOUCH = "ontouchstart" in window,
3178
  POINTER_IE10 = window.navigator.msPointerEnabled && !window.navigator.pointerEnabled && !TOUCH,
3179
  POINTER = (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) && !TOUCH,
3180
+ USE_TOUCH = TOUCH || POINTER,
3181
+ SUPPORTS_PASSIVE = false;
3182
+
3183
+
3184
+ // @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md
3185
+ try {
3186
+ var opts = Object.defineProperty({}, 'passive', {
3187
+ get: function() {
3188
+ SUPPORTS_PASSIVE = true;
3189
+ }
3190
+ });
3191
+ window.addEventListener("testPassive", null, opts);
3192
+ window.removeEventListener("testPassive", null, opts);
3193
+ } catch (e) {}
3194
 
3195
  _.Swipe = _utils.Class.extend(/** @lend FooGallery.Swipe */{
3196
  /**
3264
  * @function init
3265
  */
3266
  init: function(){
3267
+ var self = this, elem = self.$el.get(0);
3268
+ if (SUPPORTS_PASSIVE && self.events.start == 'touchstart' && !!elem.addEventListener){
3269
+ elem.addEventListener('touchstart', self.onStart, { passive: true });
3270
+ } else {
3271
+ self.$el.on(self.events.start, {self: self}, self.onStart);
3272
+ }
3273
  self.$el.on(self.events.move, {self: self}, self.onMove);
3274
+ if (SUPPORTS_PASSIVE && self.events.end == 'touchend' && !!elem.addEventListener){
3275
+ elem.addEventListener('touchend', self.onEnd, { passive: true });
3276
+ } else {
3277
+ self.$el.on(self.events.end, {self: self}, self.onEnd);
3278
+ }
3279
  if (_is.string(self.events.leave)) self.$el.on(self.events.leave, {self: self}, self.onEnd);
3280
  self.$el.data(DATA_NAME, self);
3281
  },
3285
  * @function destroy
3286
  */
3287
  destroy: function(){
3288
+ var self = this, elem = self.$el.get(0);
3289
+ if (SUPPORTS_PASSIVE && self.events.start == 'touchstart' && !!elem.removeEventListener){
3290
+ elem.removeEventListener('touchstart', self.onStart, { passive: true });
3291
+ } else {
3292
+ self.$el.off(self.events.start, self.onStart);
3293
+ }
3294
  self.$el.off(self.events.move, self.onMove);
3295
+ if (SUPPORTS_PASSIVE && self.events.end == 'touchend' && !!elem.removeEventListener){
3296
+ elem.removeEventListener('touchend', self.onEnd, { passive: true });
3297
+ } else {
3298
+ self.$el.off(self.events.end, self.onEnd);
3299
+ }
3300
  if (_is.string(self.events.leave)) self.$el.off(self.events.leave, self.onEnd);
3301
  self.$el.removeData(DATA_NAME);
3302
  },
4156
  self.initialized = true;
4157
 
4158
  // performed purely to re-check if any items need to be loaded after content has possibly shifted
 
 
4159
  self._check(1000);
4160
+ // self._check(3000);
 
4161
 
4162
  /**
4163
  * @summary Raised after the template is fully initialized and is ready to be interacted with.
4344
  return this.items.load(this.getAvailable());
4345
  },
4346
 
4347
+ getItems: function(){
4348
+ return this.pages ? this.pages.items() : this.items.available();
4349
+ },
4350
+
4351
  /**
4352
  * @summary Check if any available items need to be loaded and loads them.
4353
  * @memberof FooGallery.Template#
4480
  lazy: true,
4481
  viewport: 200,
4482
  items: [],
4483
+ fixLayout: true,
4484
+ delay: 0,
4485
  throttle: 50,
4486
  timeout: 60000,
4487
+ srcset: "data-srcset-fg",
4488
+ src: "data-src-fg",
4489
  template: {}
4490
  }, {
4491
  container: "foogallery"
4501
  * @property {boolean} [lazy=true] - Whether or not to enable lazy loading of images.
4502
  * @property {number} [viewport=200] - The number of pixels to inflate the viewport by when checking to lazy load items.
4503
  * @property {(FooGallery.Item~Options[]|FooGallery.Item[]| string)} [items=[]] - An array of items to load when required. A url can be provided and the items will be fetched using an ajax call, the response should be a properly formatted JSON array of {@link FooGallery.Item~Options|item} object.
4504
+ * @property {boolean} [fixLayout=true] - Whether or not the items' size should be set with CSS until the image is loaded.
4505
+ * @property {number} [delay=0] - The number of milliseconds to delay the initialization of a template.
4506
  * @property {number} [throttle=50] - The number of milliseconds to wait once scrolling has stopped before performing any work.
4507
  * @property {number} [timeout=60000] - The number of milliseconds to wait before forcing a timeout when loading items.
4508
+ * @property {string} [src="data-src-fg"] - The name of the attribute to retrieve an images src url from.
4509
+ * @property {string} [srcset="data-srcset-fg"] - The name of the attribute to retrieve an images srcset url from.
4510
  * @property {object} [template={}] - An object containing any additional custom options for the template.
4511
  * @property {FooGallery.Template~CSSClasses} [cls] - An object containing all CSS classes for the template.
4512
  * @property {FooGallery.Template~CSSSelectors} [sel] - An object containing all CSS selectors for the template.
5028
  */
5029
  self.$caption = null;
5030
 
5031
+ /**
5032
+ * @memberof FooGallery.Item#
5033
+ * @name fixLayout
5034
+ * @type {boolean}
5035
+ */
5036
+ self.fixLayout = self.tmpl.opt.fixLayout;
5037
+
5038
  /**
5039
  * @memberof FooGallery.Item#
5040
  * @name type
5151
  * @private
5152
  */
5153
  self._thumbUrl = null;
 
 
 
 
 
 
 
 
5154
  /**
5155
  * @summary This property is used to store the promise created when loading an item for the first time.
5156
  * @memberof FooGallery.Item#
5273
  if (self._undo.loader) {
5274
  self.$el.find(self.sel.loader).remove();
5275
  }
5276
+ if (self._undo.placeholder && self.$image.prop("src") == _.emptyImage) {
5277
  self.$image.removeAttr("src");
5278
  }
5279
  } else if (self.isCreated) {
5338
  var e = self.tmpl.raise("parse-item", [self, $el]);
5339
  if (!e.isDefaultPrevented() && (self.isCreated = $el.is(self.sel.elem))) {
5340
  self.isParsed = self.doParseItem($el);
5341
+ if (self.fixLayout) self.fix();
5342
  // We don't load the attributes when parsing as they are only ever used to create an item and if you're parsing it's already created.
5343
  }
5344
  if (self.isParsed) {
5377
  self._undo.style = $el.attr("style") || "";
5378
 
5379
  self.$el = $el.data(_.dataItem, self);
5380
+ self.$inner = self.$el.children(sel.inner);
5381
+ self.$anchor = self.$inner.children(sel.anchor).on("click.foogallery", {self: self}, self.onAnchorClick);
5382
  self.$image = self.$anchor.find(sel.image);
5383
+ self.$caption = self.$inner.children(sel.caption.elem).on("click.foogallery", {self: self}, self.onCaptionClick);
5384
  self.isAttached = self.$el.parent().length > 0;
5385
  self.isLoading = self.$el.is(sel.loading);
5386
  self.isLoaded = self.$el.is(sel.loaded);
5387
  self.isError = self.$el.is(sel.error);
5388
+
5389
+ var data = self.$anchor.data();
5390
+ self.id = data.id || self.id;
5391
+ self.tags = data.tags || self.tags;
5392
+ self.href = data.href || self.$anchor.attr('href') || self.href;
5393
  self.src = self.$image.attr(o.src) || self.src;
5394
  self.srcset = self.$image.attr(o.srcset) || self.srcset;
5395
  self.width = parseInt(self.$image.attr("width")) || self.width;
5396
  self.height = parseInt(self.$image.attr("height")) || self.height;
5397
  self.title = self.$image.attr("title") || self.title;
5398
  self.alt = self.$image.attr("alt") || self.alt;
5399
+ self.caption = data.title || data.captionTitle || self.caption || self.title;
5400
+ self.description = data.description || data.captionDesc || self.description || self.alt;
5401
  // if the caption or description are not set yet try fetching it from the html
5402
  if (_is.empty(self.caption)) self.caption = $.trim(self.$caption.find(sel.caption.title).html());
5403
  if (_is.empty(self.description)) self.description = $.trim(self.$caption.find(sel.caption.description).html());
5409
  self.$caption.find(sel.caption.description).html(self.description.substr(0, self.maxDescriptionLength) + "&hellip;");
5410
  }
5411
  // check if the item has a wrap
5412
+ if (self.$anchor.children(sel.wrap).length === 0) {
5413
+ var $wrap = $("<span/>", {"class": cls.wrap});
5414
+ self.$anchor.append($wrap.append(self.$image));
5415
  self._undo.wrap = true;
5416
  }
5417
  // check if the item has a loader
5418
+ if (self.$el.children(sel.loader).length === 0) {
5419
  self.$el.append($("<div/>", {"class": cls.loader}));
5420
  self._undo.loader = true;
5421
  }
5422
  // if the image has no src url then set the placeholder
5423
+ var img = self.$image.get(0);
5424
+ if (_is.empty(img.src)) {
5425
+ img.src = _.emptyImage;
5426
  self._undo.placeholder = true;
5427
  }
5428
  if (self.isCreated && self.isAttached && !self.isLoading && !self.isLoaded && !self.isError) {
5530
  }
5531
 
5532
  attr.image["class"] = cls.image;
5533
+ attr.image["src"] = _.emptyImage;
5534
  attr.image[o.src] = self.src;
5535
  attr.image[o.srcset] = self.srcset;
5536
  attr.image["width"] = self.width;
5555
  attr.title["class"] = cls.title;
5556
  attr.description["class"] = cls.description;
5557
  if (hasTitle) {
5558
+ var $title = $("<div/>").attr(attr.title), titleHtml = self.caption;
5559
  // enforce the max length for the caption
5560
  if (_is.number(self.maxCaptionLength) && self.maxCaptionLength > 0 && _is.string(self.caption) && self.caption.length > self.maxCaptionLength) {
5561
+ titleHtml = self.caption.substr(0, self.maxCaptionLength) + "&hellip;";
 
 
5562
  }
5563
+ $title.get(0).innerHTML = titleHtml;
5564
  $inner.append($title);
5565
  }
5566
  if (hasDesc) {
5567
+ var $desc = $("<div/>").attr(attr.description), descHtml = self.description;
5568
  // enforce the max length for the description
5569
  if (_is.number(self.maxDescriptionLength) && self.maxDescriptionLength > 0 && _is.string(self.description) && self.description.length > self.maxDescriptionLength) {
5570
+ descHtml = self.description.substr(0, self.maxDescriptionLength) + "&hellip;";
 
 
5571
  }
5572
+ $desc.get(0).innerHTML = descHtml;
5573
  $inner.append($desc);
5574
  }
5575
  }
5635
  var e = self.tmpl.raise("append-item", [self]);
5636
  if (!e.isDefaultPrevented()) {
5637
  self.tmpl.$el.append(self.$el);
5638
+ if (self.fixLayout) self.fix();
5639
  self.isAttached = true;
5640
  }
5641
  if (self.isAttached) {
5713
  var e = self.tmpl.raise("detach-item", [self]);
5714
  if (!e.isDefaultPrevented()) {
5715
  self.$el.detach();
5716
+ if (self.fixLayout) self.unfix();
5717
  self.isAttached = false;
5718
  }
5719
  if (!self.isAttached) {
5759
  self.isLoading = false;
5760
  self.isLoaded = true;
5761
  self.$el.removeClass(cls.loading).addClass(cls.loaded);
5762
+ if (self.fixLayout) self.unfix();
5763
  self.tmpl.raise("loaded-item", [self]);
5764
  def.resolve(self);
5765
  };
5790
  fix: function () {
5791
  var self = this;
5792
  if (self.tmpl == null) return self;
5793
+ if (self.isCreated && !self.isLoading && !self.isLoaded && !self.isError) {
5794
+ var w = self.width, h = self.height, img = self.$image.get(0);
 
5795
  // if we have a base width and height to work with
5796
+ if (!isNaN(w) && !isNaN(h) && !!img) {
5797
  // figure out the max image width and calculate the height the image should be displayed as
5798
  var width = _is.fn(self.maxWidth) ? self.maxWidth(self) : self.$image.width();
5799
  if (width <= 0) width = w;
5813
  unfix: function () {
5814
  var self = this;
5815
  if (self.tmpl == null) return self;
5816
+ if (self.isCreated) self.$image.css({width: '', height: ''});
 
5817
  return self;
5818
  },
5819
  /**
6166
  reset: function () {
6167
  this.setAvailable(this.all());
6168
  },
 
 
 
 
 
 
 
 
6169
  /**
6170
  * @summary Filter the supplied `items` and return only those that can be loaded.
6171
  * @memberof FooGallery.Items#
6705
  available: function () {
6706
  return this.get(this.current);
6707
  },
6708
+ items: function(){
6709
+ return this.get(this.current);
6710
+ },
6711
  controls: function (pageNumber) {
6712
  var self = this;
6713
  if (self.isValid(pageNumber)) {
6727
  pageNumber = self.number(pageNumber);
6728
  var index = pageNumber - 1;
6729
  self.tmpl.items.detach(self.tmpl.items.all());
 
6730
  self.current = pageNumber;
6731
+ self.tmpl.items.create(self._arr[index], true);
6732
  },
6733
  get: function (pageNumber) {
6734
  var self = this;
7383
  (function($, _, _utils, _is){
7384
 
7385
  _.Justified = _utils.Class.extend({
7386
+ construct: function(template, options){
7387
+ this.tmpl = template;
7388
+ this.$el = template.$el;
7389
  this.options = $.extend(true, {}, _.Justified.defaults, options);
7390
  this._items = [];
7391
  this._lastRefresh = 0;
7418
  }
7419
  },
7420
  parse: function(){
7421
+ var self = this;
7422
+ return self._items = $.map(self.tmpl.getItems(), function(item, i){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7423
  return {
7424
  index: i,
7425
+ width: item.width,
7426
+ height: item.height,
7427
  top: 0,
7428
  left: 0,
7429
+ $item: item.$el
7430
  };
7431
+ });
 
 
7432
  },
7433
  getMaxRowHeight: function() {
7434
  var self = this;
7655
  return rows;
7656
  },
7657
  onWindowResize: function(e){
7658
+ e.data.self.layout( true );
7659
  }
7660
  });
7661
 
7675
  FooGallery.utils,
7676
  FooGallery.utils.is
7677
  );
7678
+ (function($, _, _is){
7679
 
7680
  _.JustifiedTemplate = _.Template.extend({
7681
  onPreInit: function(event, self){
7682
+ self.justified = new _.Justified( self, self.template );
7683
  },
7684
  onInit: function(event, self){
7685
  self.justified.init();
7696
  onLayout: function(event, self){
7697
  self.justified.layout( true );
7698
  },
7699
+ onAfterPageChange: function(event, self, current, prev, isFilter){
7700
+ if (!isFilter){
7701
+ self.justified.layout( true );
7702
+ }
 
7703
  },
7704
+ onAfterFilterChange: function(event, self){
7705
+ self.justified.layout( true );
7706
  }
7707
  });
7708
 
7713
  })(
7714
  FooGallery.$,
7715
  FooGallery,
7716
+ FooGallery.utils.is
7717
  );
7718
  (function($, _, _utils, _is){
7719
 
7720
  _.Portfolio = _utils.Class.extend({
7721
+ construct: function(tmpl, options){
7722
+ this.tmpl = tmpl;
7723
+ this.$el = tmpl.$el;
7724
  this.options = $.extend(true, {}, _.Portfolio.defaults, options);
7725
  this._items = [];
7726
  this._lastWidth = 0;
7742
  visibility: 'hidden',
7743
  maxWidth: maxWidth
7744
  }).appendTo('body');
7745
+
7746
+ self._items = $.map(self.tmpl.getItems(), function(item, i){
7747
+ var width = item.width, height = item.height;
7748
+ item.$caption.css("max-width", width);
 
 
 
 
 
 
 
7749
  if (!visible){
7750
+ var $clone = item.$el.clone();
7751
  $clone.appendTo($test);
7752
  width = $clone.outerWidth();
7753
  height = $clone.outerHeight();
7754
  } else {
7755
+ width = item.$el.outerWidth();
7756
+ height = item.$el.outerHeight();
7757
  }
 
7758
  return {
7759
  index: i,
7760
  width: width,
7761
  height: height,
7762
  top: 0,
7763
  left: 0,
7764
+ $item: item.$el,
7765
+ $thumb: item.$thumb
7766
  };
7767
+ });
7768
  $test.remove();
7769
  return self._items;
7770
  },
7940
  this.portfolio = null;
7941
  },
7942
  onPreInit: function(event, self){
7943
+ self.portfolio = new _.Portfolio( self, self.template );
7944
  },
7945
  onInit: function(event, self){
7946
  self.portfolio.init();
7957
  onLayout: function(event, self){
7958
  self.portfolio.layout( true );
7959
  },
7960
+ onAfterPageChange: function(event, self, current, prev, isFilter){
7961
+ if (!isFilter){
7962
+ self.portfolio.layout( true );
7963
+ }
 
7964
  },
7965
+ onAfterFilterChange: function(event, self){
7966
+ self.portfolio.layout( true );
7967
  }
7968
  });
7969
 
7970
  _.template.register("simple_portfolio", _.PortfolioTemplate, {
7971
+ template: {
7972
+ gutter: 40
7973
+ }
7974
  }, {
7975
  container: "foogallery fg-simple_portfolio"
7976
  });
8251
  try {
8252
  // if the gallery is displayed within a FooBox do not trigger the post-load which would cause the lightbox to re-init
8253
  if (tmpl.$el.parents(".fbx-item").length > 0) return;
8254
+ if (tmpl.$el.hasClass("fbx-instance") && !!window.FOOBOX && !!$.fn.foobox){
8255
+ tmpl.$el.foobox(window.FOOBOX.o);
8256
+ } else {
8257
+ $("body").trigger("post-load");
8258
+ }
8259
  } catch(err) {
8260
  console.error(err);
8261
  }
extensions/default-templates/shared/js/foogallery.min.js CHANGED
@@ -1,11 +1,11 @@
1
  /*
2
  * FooGallery - The Most Intuitive and Extensible Gallery Creation and Management Tool Ever Created for WordPress
3
- * @version 1.1.13
4
  * @link
5
  * @copyright Steven Usher & Brad Vincent 2015
6
  * @license Released under the GPLv3 license.
7
  */
8
 
9
- !function(a,b){b.$=a}(jQuery,window.FooGallery=window.FooGallery||{}),function(a){if(!a)return void console.warn("jQuery must be included in the page prior to the FooGallery.utils library.");var b={$:a,version:"0.0.8"};b.versionCompare=function(a,b){function c(a){for(var b=a.split("."),c=0,d=b.length;c<d;c++)b[c]=parseInt(b[c]),isNaN(b[c])&&(b[c]=0);return b}if(!/[\d.]/.test(a)||!/[\d.]/.test(b))return NaN;for(var d=c(a),e=c(b);d.length<e.length;)d.push(0);for(;e.length<d.length;)e.push(0);for(var f=0;f<d.length;++f){if(e.length==f)return 1;if(d[f]!=e[f])return d[f]>e[f]?1:-1}return d.length!=e.length?-1:0},!function(){try{return!!window.FooGallery.utils}catch(a){return!1}}()?window.FooGallery.utils=b:b.versionCompare(b.version,window.FooGallery.utils.version)>0?(console.warn("An older version of FooGallery.utils ("+window.FooGallery.utils.version+") already exists in the page, version "+b.version+" will override it."),window.FooGallery.utils=b):console.warn("A newer version of FooGallery.utils ("+window.FooGallery.utils.version+") already exists in the page, version "+b.version+" will not register itself.")}(jQuery),function(a,b){"0.0.8"===b.version&&(b.is={},b.is.array=function(a){return"[object Array]"===Object.prototype.toString.call(a)},b.is.boolean=function(a){return"[object Boolean]"===Object.prototype.toString.call(a)},b.is.element=function(a){return"object"==typeof HTMLElement?a instanceof HTMLElement:!!a&&"object"==typeof a&&null!==a&&1===a.nodeType&&"string"==typeof a.nodeName},b.is.empty=function(a){if(b.is.undef(a)||null===a)return!0;if(b.is.number(a)&&0==a)return!0;if(b.is.boolean(a)&&!1===a)return!0;if(b.is.string(a)&&0===a.length)return!0;if(b.is.array(a)&&0===a.length)return!0;if(b.is.jq(a)&&0===a.length)return!0;if(b.is.hash(a)){for(var c in a)if(a.hasOwnProperty(c))return!1;return!0}return!1},b.is.error=function(a){return"[object Error]"===Object.prototype.toString.call(a)},b.is.fn=function(a){return a===window.alert||"[object Function]"===Object.prototype.toString.call(a)},b.is.hash=function(a){return b.is.object(a)&&a.constructor===Object&&!a.nodeType&&!a.setInterval},b.is.jq=function(c){return!b.is.undef(a)&&c instanceof a},b.is.number=function(a){return"[object Number]"===Object.prototype.toString.call(a)&&!isNaN(a)},b.is.object=function(a){return"[object Object]"===Object.prototype.toString.call(a)&&!b.is.undef(a)&&null!==a},b.is.promise=function(a){return b.is.object(a)&&b.is.fn(a.then)&&b.is.fn(a.promise)},b.is.size=function(a){return!!(b.is.string(a)&&!b.is.empty(a)||b.is.number(a))&&/^(auto|none|(?:[\d\.]*)+?(?:%|px|mm|q|cm|in|pt|pc|em|ex|ch|rem|vh|vw|vmin|vmax)?)$/.test(a)},b.is.string=function(a){return"[object String]"===Object.prototype.toString.call(a)},b.is.undef=function(a){return void 0===a})}(FooGallery.utils.$,FooGallery.utils),function(a,b,c){if("0.0.8"===b.version){b.fn={};var d=Function.prototype.toString;b.fn.CONTAINS_SUPER=/xyz/.test(d.call(function(){xyz}))?/\b_super\b/:/.*/,b.fn.addOrOverride=function(a,e,f){if(c.object(a)&&c.string(e)&&!c.empty(e)&&c.fn(f)){var g=a[e],h=c.fn(g)&&b.fn.CONTAINS_SUPER.test(d.call(f));a[e]=h?function(a,b){return function(){var c=this._super;this._super=a;var d=b.apply(this,arguments);return this._super=c,d}}(g,f):f}},b.fn.apply=function(a,b){function d(){return a.apply(this,b)}return b=c.array(b)?b:[],d.prototype=a.prototype,new d},b.fn.arg2arr=function(a){return Array.prototype.slice.call(a)},b.fn.check=function(d,e,f,g){function h(a){return function(){return a.apply(d,arguments)}}return f=c.fn(f)?f:a.noop,d=c.object(d)?d:window,e=c.string(e)?b.fn.fetch(e,g):e,h(c.fn(e)?e:f)},b.fn.fetch=function(b,d){return!c.string(b)||c.empty(b)?null:(d=c.object(d)?d:window,a.each(b.split("."),function(a,b){if(!d[b])return!1;d=d[b]}),c.fn(d)?d:null)},b.fn.enqueue=function(d,e,f,g){function h(a,b){try{return n.push(a),b.apply(a,i)}catch(a){return j.reject(a,n),j}}var i=b.fn.arg2arr(arguments),j=a.Deferred(),k=a.Deferred(),l=k.promise(),m=[],n=[],o=!0;return d=i.shift(),e=i.shift(),a.each(d,function(a,d){c.fn(d[e])&&(l=l.then(function(){if(!o){var a=b.fn.arg2arr(arguments);m.push(a)}return o=!1,h(d,d[e])}))}),l.then(function(){if(!o){var a=b.fn.arg2arr(arguments);m.push(a)}o=!1,j.resolve(m)}),l.fail(function(){var a=b.fn.arg2arr(arguments);a.push(n),j.reject.apply(j,a)}),k.resolve(),j.promise()},b.fn.when=function(b){if(!c.array(b)||c.empty(b))return a.when();for(var d=a.Deferred(),e=[],f=b.length,g=0;g<b.length;g++)b[g].then(function(a){e.push(a)}).always(function(){--f||d.resolve(e)});return d.promise()},b.fn.rejectWith=function(c,d){var e=a.Deferred(),f=b.fn.arg2arr(arguments);return e.reject.apply(e,f).promise()},b.fn.resolveWith=function(c,d){var e=a.Deferred(),f=b.fn.arg2arr(arguments);return e.resolve.apply(e,f).promise()},b.fn.resolved=a.Deferred().resolve().promise(),b.fn.rejected=a.Deferred().reject().promise()}}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(a,b){if("0.0.8"===a.version){a.url={};var c=document.createElement("a");a.url.parts=function(a){return c.href=a,{hash:c.hash,host:c.host,hostname:c.hostname,href:c.href,origin:c.origin,pathname:c.pathname,port:c.port,protocol:c.protocol,search:c.search}},a.url.full=function(a){return!b.string(a)||b.empty(a)?null:(c.href=a,c.href)},a.url.param=function(a,c,d){if(!b.string(a)||!b.string(c)||b.empty(c))return a;var e,f,g,h;return b.undef(d)?(e=new RegExp("[?|&]"+c+"=([^&;]+?)(&|#|;|$)"),f=e.exec(a)||[,""],g=f[1].replace(/\+/g,"%20"),b.string(g)&&!b.empty(g)?decodeURIComponent(g):null):(""===d||null===d?(e=new RegExp("^([^#]*?)(([^#]*)&)?"+c+"(=[^&#]*)?(&|#|$)"),g=a.replace(e,"$1$3$5").replace(/^([^#]*)((\?)&|\?(#|$))/,"$1$3$4")):(e=new RegExp("([?&])"+c+"[^&]*"),h=c+"="+encodeURIComponent(d),(g=a.replace(e,"$1"+h))!==a||e.test(g)||(g+=(-1!==g.indexOf("?")?"&":"?")+h)),g)}}}(FooGallery.utils,FooGallery.utils.is),function(a,b,c){"0.0.8"===a.version&&(a.str={},a.str.camel=function(a){return b.empty(a)?a:a.toUpperCase()===a?a.toLowerCase():a.replace(/^([A-Z])|[-\s_]+(\w)/g,function(a,c,d){return b.string(d)?d.toUpperCase():c.toLowerCase()})},a.str.contains=function(a,c,d){return!(!b.string(a)||b.empty(a)||!b.string(c)||b.empty(c))&&(c.length<=a.length&&-1!==(d?a.toUpperCase().indexOf(c.toUpperCase()):a.indexOf(c)))},a.str.containsWord=function(a,c,d){if(!b.string(a)||b.empty(a)||!b.string(c)||b.empty(c)||a.length<c.length)return!1;for(var e=a.split(/\W/),f=0,g=e.length;f<g;f++)if(d?e[f].toUpperCase()==c.toUpperCase():e[f]==c)return!0;return!1},a.str.endsWith=function(a,c){return!b.string(a)||b.empty(a)||!b.string(c)||b.empty(c)?a==c:a.slice(a.length-c.length)==c},a.str.escapeRegExp=function(a){return b.empty(a)?a:a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},a.str.fnv1a=function(a){if(!b.string(a)||b.empty(a))return null;var c,d,e=2166136261;for(c=0,d=a.length;c<d;c++)e^=a.charCodeAt(c),e+=(e<<1)+(e<<4)+(e<<7)+(e<<8)+(e<<24);return e>>>0},a.str.from=function(c,d){return!b.string(c)||b.empty(c)||!b.string(d)||b.empty(d)?null:a.str.contains(c,d)?c.substring(c.indexOf(d)+d.length):null},a.str.join=function(d,e,f){if(!b.string(d)||!b.string(e))return null;var g=c.arg2arr(arguments);d=g.shift();var h,i,j=g.shift();for(h=0,i=g.length;h<i;h++)e=g[h],b.empty(e)||(a.str.endsWith(j,d)&&(j=j.slice(0,j.length-d.length)),a.str.startsWith(e,d)&&(e=e.slice(d.length)),j+=d+e);return j},a.str.startsWith=function(a,c){return!b.empty(a)&&!b.empty(c)&&a.slice(0,c.length)==c},a.str.until=function(c,d){return b.empty(c)||b.empty(d)?c:a.str.contains(c,d)?c.substring(0,c.indexOf(d)):c},a.str.format=function(a,d,e){var f=c.arg2arr(arguments);if(a=f.shift(),b.empty(a)||b.empty(f))return a;1===f.length&&(b.array(f[0])||b.object(f[0]))&&(f=f[0]);for(var g in f)a=a.replace(new RegExp("\\{"+g+"\\}","gi"),f[g]);return a})}(FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn),function(a,b,c,d,e){if("0.0.8"===b.version){b.obj={};var f=function(){};b.obj.create=function(a){if(!c.object(a))throw TypeError("Argument must be an object");f.prototype=a;var b=new f;return f.prototype=null,b},b.obj.extend=function(e,f,g){e=c.object(e)?e:{};var h=d.arg2arr(arguments);return h.shift(),a.each(h,function(a,c){b.obj.merge(e,c)}),e},b.obj.merge=function(a,d){a=c.hash(a)?a:{},d=c.hash(d)?d:{};for(var e in d)d.hasOwnProperty(e)&&(c.hash(d[e])?(a[e]=c.hash(a[e])?a[e]:{},b.obj.merge(a[e],d[e])):c.array(d[e])?a[e]=d[e].slice():a[e]=d[e]);return a},b.obj.mergeValid=function(d,e,f,g){if(!c.hash(f)||!c.hash(e))return d;e=c.hash(e)?e:{},g=c.hash(g)?g:{};var h,i,j;for(h in e)e.hasOwnProperty(h)&&c.fn(e[h])&&(i=c.array(g[h])?g[h]:c.string(g[h])?[g[h]]:[h],a.each(i,function(a,g){if(j=b.obj.prop(f,g),!c.undef(j))return e[h](j)?(b.obj.prop(d,h,j),!1):void 0}));return d},b.obj.prop=function(b,d,f){if(c.object(b)&&!c.empty(d)){var g,h;if(c.undef(f))return e.contains(d,".")?(g=d.split("."),h=g.length-1,a.each(g,function(a,d){if(a===h)f=b[d];else{if(!c.hash(b[d]))return!1;b=b[d]}})):c.undef(b[d])||(f=b[d]),f;e.contains(d,".")?(g=d.split("."),h=g.length-1,a.each(g,function(a,d){a===h?b[d]=f:b=c.hash(b[d])?b[d]:b[d]={}})):c.undef(b[d])||(b[d]=f)}}}}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.str),function(a,b,c){if("0.0.8"===b.version){b.ready=function(a){function c(){try{a.call(window,b.$)}catch(a){console.error(a)}}(Function("/*@cc_on return true@*/")()?"complete"===document.readyState:"loading"!==document.readyState)?c():document.addEventListener("DOMContentLoaded",c,!1)};var d=0;b.uniqueId=function(a,b){var e=a.attr("id");return c.empty(e)&&(b=c.string(b)&&!c.empty(b)?b:"uid-",e=b+ ++d,a.attr("id",e).data("__uniqueId__",!0)),e},b.removeUniqueId=function(a){a.data("__uniqueId__")&&a.removeAttr("id").removeData("__uniqueId__")}}}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(a,b,c){if("0.0.8"===b.version){b.transition={};var d=document.createElement("div");b.transition.supported=function(a){var b=a.style;return c.string(b.transition)||c.string(b.WebkitTransition)||c.string(b.MozTransition)||c.string(b.msTransition)||c.string(b.OTransition)}(d),b.transition.end=function(a){var b=a.style;return c.string(b.transition)?"transitionend":c.string(b.WebkitTransition)?"webkitTransitionEnd":c.string(b.MozTransition)?"transitionend":c.string(b.msTransition)?"msTransitionEnd":c.string(b.OTransition)?"oTransitionEnd":null}(d),b.transition.duration=function(a,b){if(b=c.number(b)?b:0,!c.jq(a))return b;var d=a.css("transition-duration");if(/^([\d\.]*)+?(ms|s)$/i.test(d)){var e=d.match(/^([\d\.]*)+?(ms|s)$/i),f=parseFloat(e[1]);return"s"===e[2].toLowerCase()&&(f*=1e3),f}return b},b.transition.start=function(d,e,f,g){var h=a.Deferred();if(d=d.first(),b.transition.supported){var i=d.data("transition_safety");c.hash(i)&&c.number(i.timer)&&(clearTimeout(i.timer),d.removeData("transition_safety").off(b.transition.end+".utils"),i.deferred.reject()),g=c.number(g)?g:b.transition.duration(d)+50,i={deferred:h,timer:setTimeout(function(){d.removeData("transition_safety").off(b.transition.end+".utils"),h.resolve()},g)},d.data("transition_safety",i),d.on(b.transition.end+".utils",function(a){d.is(a.target)&&(clearTimeout(i.timer),d.removeData("transition_safety").off(b.transition.end+".utils"),h.resolve())})}return setTimeout(function(){c.fn(e)?e.apply(d.get(0),[d]):d.toggleClass(e,f),b.transition.supported||h.resolve()},20),h.promise()}}}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(a,b,c,d,e){"0.0.8"===b.version&&(b.Class=function(){},b.Class.extend=function(a){function f(){if(!c.fn(this.construct))throw new SyntaxError('FooGallery.utils.Class objects must be constructed with the "new" keyword.');this.construct.apply(this,arguments)}a=c.hash(a)?a:{};var g=d.create(this.prototype);for(var h in a)a.hasOwnProperty(h)&&e.addOrOverride(g,h,a[h]);return g.construct=c.fn(g.construct)?g.construct:function(){},f.prototype=g,f.prototype.constructor=c.fn(g.__ctor__)?g.__ctor__:f,f.extend=b.Class.extend,f.override=b.Class.override,f},b.Class.override=function(a,b){e.addOrOverride(this.prototype,a,b)})}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj,FooGallery.utils.fn),function(a,b,c){if("0.0.8"===b.version){b.Bounds=b.Class.extend({construct:function(){var a=this;a.top=0,a.right=0,a.bottom=0,a.left=0,a.width=0,a.height=0},inflate:function(a){var b=this;return c.number(a)&&(b.top-=a,b.right+=a,b.bottom+=a,b.left-=a,b.width+=2*a,b.height+=2*a),b},intersects:function(a){var b=this;return b.left<=a.right&&a.left<=b.right&&b.top<=a.bottom&&a.top<=b.bottom}});var d;b.getViewportBounds=function(c){d||(d=a(window));var e=new b.Bounds;return e.top=d.scrollTop(),e.left=d.scrollLeft(),e.width=d.width(),e.height=d.height(),e.right=e.left+e.width,e.bottom=e.top+e.height,e.inflate(c),e},b.getElementBounds=function(d){c.jq(d)||(d=a(d));var e=new b.Bounds;if(0!==d.length){var f=d.offset();e.top=f.top,e.left=f.left,e.width=d.width(),e.height=d.height()}return e.right=e.left+e.width,e.bottom=e.top+e.height,e}}}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(a,b,c,d){"0.0.8"===b.version&&(b.Factory=b.Class.extend({construct:function(){this.registered={}},contains:function(a){return!c.undef(this.registered[a])},load:function(b,e,f){var g,h,i=this,j=d.arg2arr(arguments),k=[],l=[];b=j.shift()||{};for(g in i.registered)if(i.registered.hasOwnProperty(g)){var m=i.registered[g];b.hasOwnProperty(g)&&(h=b[g],c.string(h)&&(h=d.fetch(b[g])),c.fn(h)&&(m={name:g,klass:h,priority:i.registered[g].priority})),k.push(m)}for(g in b)b.hasOwnProperty(g)&&!i.registered.hasOwnProperty(g)&&(h=b[g],c.string(h)&&(h=d.fetch(b[g])),c.fn(h)&&k.push({name:g,klass:h,priority:0}));return k.sort(function(a,b){return b.priority-a.priority}),a.each(k,function(a,b){c.fn(b.klass)&&l.push(d.apply(b.klass,j))}),l},make:function(a,b,e){var f,g=this,h=d.arg2arr(arguments);return a=h.shift(),f=g.registered[a],c.hash(f)&&c.fn(f.klass)?d.apply(f.klass,h):null},names:function(b){b=!!c.boolean(b)&&b;var d,e=[];if(b){var f=[];for(d in this.registered)this.registered.hasOwnProperty(d)&&f.push(this.registered[d]);f.sort(function(a,b){return b.priority-a.priority}),a.each(f,function(a,b){e.push(b.name)})}else for(d in this.registered)this.registered.hasOwnProperty(d)&&e.push(d);return e},register:function(a,b,d){if(!c.string(a)||c.empty(a)||!c.fn(b))return!1;d=c.number(d)?d:0;var e=this.registered[a];return this.registered[a]={name:a,klass:b,priority:c.undef(e)?d:e.priority},!0}}))}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn),function(a,b,c){if("0.0.8"===a.version){var d=!1;try{d=!!window.localStorage}catch(a){d=!1}a.Debugger=a.Class.extend({construct:function(a){this.key=a,this.enabled=!!d&&!!localStorage.getItem(this.key)},enable:function(){d&&(this.enabled=!0,localStorage.setItem(this.key,this.enabled))},disable:function(){d&&(this.enabled=!1,localStorage.removeItem(this.key))},log:function(a,c){this.enabled&&console.log.apply(console,b.arg2arr(arguments))},logf:function(a,d,e){if(this.enabled){var f=b.arg2arr(arguments);a=f.shift(),d=f.shift(),f.unshift(c.format(a,d)),this.log.apply(this,f)}}})}}(FooGallery.utils,FooGallery.utils.fn,FooGallery.utils.str),function(a,b,c){"0.0.8"===b.version&&(b.Throttle=b.Class.extend({construct:function(a){this.id=null,this.active=!1,this.idle=c.number(a)?a:0},limit:function(a){if(c.fn(a)){this.clear();var b=this;this.active=!0,this.id=setTimeout(function(){b.active=!1,b.id=null,a()},this.idle)}},clear:function(){c.number(this.id)&&(clearTimeout(this.id),this.active=!1,this.id=null)}}))}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(a,b,c,d,e){b.debug=new c.Debugger("__FooGallery__"),c.selectify=function(b){if(d.empty(b))return null;if(d.hash(b)){var e,f={};for(var g in b)b.hasOwnProperty(g)&&(e=c.selectify(b[g]))&&(f[g]=e);return f}return d.string(b)||d.array(b)?(d.string(b)&&(b=[b]),a.map(b,function(a){return d.string(a)?"."+a.split(/\s/g).join("."):null}).join(",")):null},b.emptyImage="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",b.dataTemplate="__FooGallery__",b.dataItem="__FooGalleryItem__",b.init=function(a,c){return b.template.make(a,c).initialize()},b.initAll=function(c){return e.when(a(".foogallery").map(function(a,d){return b.init(c,d)}).get())},b.parseSrc=function(b,c,e,f,g,h){if(!d.string(b))return null;if(!d.string(f))return b;var i=a.map(f.replace(/(\s[\d.]+[whx]),/g,"$1 @,@ ").split(" @,@ "),function(a){return{url:/^\s*(\S*)/.exec(a)[1],w:parseFloat((/\S\s+(\d+)w/.exec(a)||[0,1/0])[1]),h:parseFloat((/\S\s+(\d+)h/.exec(a)||[0,1/0])[1]),x:parseFloat((/\S\s+([\d.]+)x/.exec(a)||[0,1])[1])}});if(!i.length)return b;i.unshift({url:b,w:i[0].w!==1/0&&i[0].h===1/0?c:1/0,h:i[0].h!==1/0&&i[0].w===1/0?e:1/0,x:1});var j,k=window.devicePixelRatio||1,l={w:g*k,h:h*k,x:k};for(j in l)l.hasOwnProperty(j)&&(i=a.grep(i,function(a,b){return function(c){return c[a]>=l[a]||c[a]===b}}(j,Math.max.apply(null,a.map(i,function(a){return a[j]})))));for(j in l)l.hasOwnProperty(j)&&(i=a.grep(i,function(a,b){return function(c){return c[a]===b}}(j,Math.min.apply(null,a.map(i,function(a){return a[j]})))));return i[0].url},a.fn.foogallery=function(c,e){return this.each(function(f,g){if(d.string(c)){var h=a.data(g,b.dataTemplate);if(h instanceof b.Template)switch(c){case"layout":return void h.layout();case"destroy":return void h.destroy()}}else b.template.make(c,g).initialize().then(function(a){d.fn(e)&&e(a)})})},b.isCached=function(a){var b=new Image;b.src=a;var c=b.complete;return b.src="",b=null,c}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn),function(a,b,c,d,e){var f="__FooGallerySwipe__",g="ontouchstart"in window,h=window.navigator.msPointerEnabled&&!window.navigator.pointerEnabled&&!g,i=(window.navigator.pointerEnabled||window.navigator.msPointerEnabled)&&!g,j=g||i;b.Swipe=c.Class.extend({construct:function(b,c){var d=this,f=".fgswipe";d.$el=a(b),d.opt=e.extend({threshold:20,allowPageScroll:!1,swipe:a.noop,data:{}},c),d.active=!1,d.startPoint=null,d.endPoint=null,d.events={start:(j?i?h?"MSPointerDown":"pointerdown":"touchstart":"mousedown")+f,move:(j?i?h?"MSPointerMove":"pointermove":"touchmove":"mousemove")+f,end:(j?i?h?"MSPointerUp":"pointerup":"touchend":"mouseup")+f,leave:(j?i?"mouseleave":null:"mouseleave")+f}},init:function(){var a=this;a.$el.on(a.events.start,{self:a},a.onStart),a.$el.on(a.events.move,{self:a},a.onMove),a.$el.on(a.events.end,{self:a},a.onEnd),d.string(a.events.leave)&&a.$el.on(a.events.leave,{self:a},a.onEnd),a.$el.data(f,a)},destroy:function(){var a=this;a.$el.off(a.events.start,a.onStart),a.$el.off(a.events.move,a.onMove),a.$el.off(a.events.end,a.onEnd),d.string(a.events.leave)&&a.$el.off(a.events.leave,a.onEnd),a.$el.removeData(f)},getAngle:function(a,b){var c=Math.atan2(a.x-b.x,a.y-b.y),d=Math.round(180*c/Math.PI);return 360-(d<0?360-Math.abs(d):d)},getDistance:function(a,b){var c=b.x-a.x,d=b.y-a.y;return c*=c,d*=d,Math.sqrt(c+d)},getDirection:function(a,b){var c=this,d=c.getAngle(a,b);return d>337.5||d<=22.5?"N":d>22.5&&d<=67.5?"NE":d>67.5&&d<=112.5?"E":d>112.5&&d<=157.5?"SE":d>157.5&&d<=202.5?"S":d>202.5&&d<=247.5?"SW":d>247.5&&d<=292.5?"W":d>292.5&&d<=337.5?"NW":"NONE"},getPoint:function(a){var b;return j&&!d.empty(b=a.originalEvent.touches||a.touches)?{x:b[0].pageX,y:b[0].pageY}:d.number(a.pageX)&&d.number(a.pageY)?{x:a.pageX,y:a.pageY}:null},getOffset:function(a){var b=this,c=b.$el.offset();return{left:a.x-c.left,top:a.y-c.top}},onStart:function(a){var b=a.data.self,c=b.getPoint(a);d.empty(c)||(b.active=!0,b.startPoint=b.endPoint=c)},onMove:function(b){var c=b.data.self,e=c.getPoint(b);if(c.active&&!d.empty(e))if(c.endPoint=e,c.opt.allowPageScroll){if(d.hash(c.opt.allowPageScroll)){var f=c.getDirection(c.startPoint,c.endPoint);c.opt.allowPageScroll.x||-1===a.inArray(f,["NE","E","SE","NW","W","SW"])||b.preventDefault(),c.opt.allowPageScroll.y||-1===a.inArray(f,["NW","N","NE","SW","S","SE"])||b.preventDefault()}}else b.preventDefault()},onEnd:function(a){var b=a.data.self;if(b.active){b.active=!1;var c={startPoint:b.startPoint,endPoint:b.endPoint,startOffset:b.getOffset(b.startPoint),endOffset:b.getOffset(b.endPoint),angle:b.getAngle(b.startPoint,b.endPoint),distance:b.getDistance(b.startPoint,b.endPoint),direction:b.getDirection(b.startPoint,b.endPoint)};if(b.opt.threshold>0&&c.distance<b.opt.threshold)return;b.opt.swipe.apply(this,[c,b.opt.data]),b.startPoint=null,b.endPoint=null}}}),a.fn.fgswipe=function(c){return this.each(function(){var e=a(this),g=e.data(f);if(g instanceof b.Swipe){if(d.string(c)&&d.fn(g[c]))return void g[c]();g.destroy()}d.hash(c)&&(g=new b.Swipe(this,c),g.init())})}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj),function(a,b,c,d,e,f){b.TemplateFactory=c.Factory.extend({construct:function(){this.registered={}},register:function(a,b,c,e,f,g){var h=this,i=h._super(a,b,g);if(i){var j=h.registered;j[a].opt=d.hash(c)?c:{},j[a].cls=d.hash(e)?e:{},j[a].il8n=d.hash(f)?f:{}}return i},make:function(b,c){c=d.jq(c)?c:a(c),b=f.extend({},b,c.data("foogallery"));var e=this,g=e.type(b,c);return e.contains(g)?(b=e.options(g,b),e._super(g,b,c)):null},type:function(b,e){e=d.jq(e)?e:a(e);var f=this,g=d.hash(b)&&d.hash(b)&&d.string(b.type)&&f.contains(b.type)?b.type:"core";if("core"===g&&e.length>0)for(var h=f.registered,i=f.names(!0),j=0,k=i.length;j<k;j++)if(h.hasOwnProperty(i[j])){var l=i[j],m=h[l].cls;if(d.string(m.container)){var n=c.selectify(m.container);if(e.is(n)){g=i[j];break}}}return g},configure:function(a,b,c,d){var e=this;if(e.contains(a)){var g=e.registered;f.extend(g[a].opt,b),f.extend(g[a].cls,c),f.extend(g[a].il8n,d)}},options:function(a,c){c=f.extend({type:a},c);var e=this,g=e.registered,h=g.core.opt,i=g.core.cls,j=g.core.il8n;return d.hash(c.cls)||(c.cls={}),d.hash(c.il8n)||(c.il8n={}),d.undef(b.filtering)||(c=b.filtering.merge(c)),d.undef(b.paging)||(c=b.paging.merge(c)),"core"!==a&&e.contains(a)?(c=f.extend({},h,g[a].opt,c),c.cls=f.extend({},i,g[a].cls,c.cls),c.il8n=f.extend({},j,g[a].il8n,c.il8n)):(c=f.extend({},h,c),c.cls=f.extend({},i,c.cls),c.il8n=f.extend({},j,c.il8n)),c}}),b.template=new b.TemplateFactory}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(a,b,c,d,e){a.PagingFactory=b.Factory.extend({construct:function(){this.registered={}},register:function(a,b,d,e,f,g,h){var i=this,j=i._super(a,b,h);if(j){var k=i.registered;k[a].ctrl=c.fn(d)?d:null,k[a].opt=c.hash(e)?e:{},k[a].cls=c.hash(f)?f:{},k[a].il8n=c.hash(g)?g:{}}return j},type:function(a){var b,d=this;return c.hash(a)&&c.hash(b=a.paging)&&c.string(b.type)&&d.contains(b.type)?b.type:null},merge:function(a){a=e.extend({},a);var b=this,d=b.type(a),f=b.registered,g=f.default.opt,h=f.default.cls,i=f.default.il8n,j=c.hash(a.paging)?a.paging:{},k=c.hash(a.cls)&&c.hash(a.cls.paging)?e.extend({},a.cls.paging):{},l=c.hash(a.il8n)&&c.hash(a.il8n.paging)?e.extend({},a.il8n.paging):{};return c.hash(a.cls)||(a.cls={}),c.hash(a.il8n)||(a.il8n={}),"default"!==d&&b.contains(d)?(a.paging=e.extend({},g,f[d].opt,j,{type:d}),a.cls=e.extend(a.cls,{paging:h},{paging:f[d].cls},{paging:k}),a.il8n=e.extend(a.il8n,{paging:i},{paging:f[d].il8n},{paging:l})):(a.paging=e.extend({},g,j,{type:d}),a.cls=e.extend(a.cls,{paging:h},{paging:k}),a.il8n=e.extend(a.il8n,{paging:i},{paging:l})),a},configure:function(a,b,c,d){var f=this;if(f.contains(a)){var g=f.registered;e.extend(g[a].opt,b),e.extend(g[a].cls,c),e.extend(g[a].il8n,d)}},hasCtrl:function(a){var b=this,d=b.registered[a];return c.hash(d)&&c.fn(d.ctrl)},makeCtrl:function(a,b,d,e){var f=this,g=f.registered[a];return c.hash(g)&&c.fn(g.ctrl)?new g.ctrl(b,d,e):null}}),a.paging=new a.PagingFactory}(FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(a,b,c,d,e,f){var g=0;b.Template=c.Class.extend({construct:function(e,f){var h=this;h.namespace=".foogallery-"+ ++g,h.$el=d.jq(f)?f:a(f),h.opt=e,h.template=e.template,h.id=h.$el.prop("id")||e.id,h.cls=e.cls,h.il8n=e.il8n,h.sel=c.selectify(h.cls),h.items=b.components.make("items",h),h.pages=d.undef(b.paging)?null:b.paging.make(e.paging.type,h),h.filter=d.undef(b.filtering)?null:b.filtering.make(e.filtering.type,h),h.state=b.components.make("state",h),h._initialize=null,h.initializing=!1,h.initialized=!1,h.destroying=!1,h.destroyed=!1,h._undo={classes:"",style:"",create:!1,children:!1}},initialize:function(f){var g=this;return d.promise(g._initialize)?g._initialize:(f=d.jq(f)?f:a(f),g._initialize=a.Deferred(function(h){if(g.initializing=!0,0===f.length&&0===g.$el.parent().length)return void h.reject("A parent element is required.");0===g.$el.length&&(g.$el=g.create(),g._undo.create=!0),f.length>0&&g.$el.appendTo(f);var i,j=a.Deferred(),k=j.promise();g.$el.length>0&&(i=g.$el.data(b.dataTemplate))instanceof b.Template?k=k.then(function(){return i.destroy().then(function(){g.$el.data(b.dataTemplate,g)})}):g.$el.data(b.dataTemplate,g),k.then(function(){if(g.destroying)return e.rejectWith("destroy in progress");d.empty(g.opt.on)||g.$el.on(g.opt.on),g._undo.classes=g.$el.attr("class"),g._undo.style=g.$el.attr("style"),g.$el.is(g.sel.container)||g.$el.addClass(g.cls.container);var a=c.selectify(g.opt.classes);return null==a||g.$el.is(a)||g.$el.addClass(g.opt.classes),0==g.$el.children().not(g.sel.item.elem).length&&(g.$el.append(g.createChildren()),g._undo.children=!0),g.raise("pre-init").isDefaultPrevented()?e.rejectWith("pre-init default prevented"):void 0}).then(function(){return g.destroying?e.rejectWith("destroy in progress"):g.opt.delay<=0?e.resolved:a.Deferred(function(a){g._delay=setTimeout(function(){g._delay=null,a.resolve()},g.opt.delay)}).promise()}).then(function(){return g.destroying?e.rejectWith("destroy in progress"):g.raise("init").isDefaultPrevented()?e.rejectWith("init default prevented"):g.items.fetch()}).then(function(){if(g.destroying)return e.rejectWith("destroy in progress");if(g.raise("post-init").isDefaultPrevented())return e.rejectWith("post-init default prevented");var b=g.state.parse();g.state.set(d.empty(b)?g.state.initial():b),a(window).on("scroll"+g.namespace,{self:g},g.throttle(g.onWindowScroll,g.opt.throttle)).on("popstate"+g.namespace,{self:g},g.onWindowPopState)}).then(function(){return g.destroying?e.rejectWith("destroy in progress"):(g.raise("first-load"),g.loadAvailable())}).then(function(){if(g.destroying)return e.rejectWith("destroy in progress");g.initializing=!1,g.initialized=!0,g._check(200),g._check(500),g._check(1e3),g._check(2e3),g._check(5e3),g.raise("ready"),h.resolve(g)}).fail(function(a){h.reject(a)}),j.resolve()}).promise().fail(function(a){console.log("initialize failed",g,a),g.destroy()}))},create:function(){var b=this;return a("<div/>",{id:b.id,class:b.cls.container}).addClass(b.opt.classes)},createChildren:function(){return a()},destroy:function(){var b=this;return b.destroyed?e.resolved:(b.destroying=!0,a.Deferred(function(a){b.initializing&&d.promise(b._initialize)?b._initialize.always(function(){b.destroying=!1,b._destroy(),a.resolve()}):(b.destroying=!1,b._destroy(),a.resolve())}).promise())},_destroy:function(){var c=this;c.destroyed||(c.raise("destroy"),a(window).off(c.namespace),c.state.destroy(),c.filter&&c.filter.destroy(),c.pages&&c.pages.destroy(),c.items.destroy(),d.empty(c.opt.on)||c.$el.off(c.opt.on),c.raise("destroyed"),c.$el.removeData(b.dataTemplate),d.empty(c._undo.classes)?c.$el.removeAttr("class"):c.$el.attr("class",c._undo.classes),d.empty(c._undo.style)?c.$el.removeAttr("style"):c.$el.attr("style",c._undo.style),c._undo.children&&c.destroyChildren(),c._undo.create&&c.$el.remove(),c.$el=c.state=c.items=c.pages=null,c.destroyed=!0,c.initializing=!1,c.initialized=!1)},destroyChildren:function(){},getAvailable:function(){return this.pages?this.pages.available():this.items.available()},loadAvailable:function(){return this.items.load(this.getAvailable())},_check:function(a){a=d.number(a)?a:0;var b=this;setTimeout(function(){!b.initialized||b.destroying&&b.destroyed||b.loadAvailable()},a)},raise:function(c,e){if(!d.string(c)||d.empty(c))return null;e=d.array(e)?e:[];var g=this,h=c.split(".")[0],i=f.camel("on-"+h),j=a.Event(h+".foogallery");return e.unshift(g),g.$el.trigger(j,e),b.debug.logf("{id}|{name}:",{id:g.id,name:h},e),d.fn(g[i])&&(e.unshift(j),g[i].apply(g.$el.get(0),e)),j},layout:function(){var a=this;null!==a._initialize&&a.raise("layout")},throttle:function(a,b){var c=Date.now();return function(){if(c+b-Date.now()<0){var d=e.arg2arr(arguments);a.apply(this,d),c=Date.now()}}},onWindowPopState:function(a){var b=a.data.self,c=a.originalEvent.state;d.empty(c)||c.id!==b.id||(b.state.set(c),b.loadAvailable())},onWindowScroll:function(a){a.data.self.loadAvailable()}}),b.template.register("core",b.Template,{id:null,type:"core",classes:"",on:{},lazy:!0,viewport:200,items:[],delay:100,throttle:50,timeout:6e4,srcset:"data-srcset",src:"data-src",template:{}},{container:"foogallery"},{},-100)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.str),function(a,b){a.Component=b.Class.extend({construct:function(a){this.tmpl=a},destroy:function(){this.tmpl=null}}),a.components=new b.Factory}(FooGallery,FooGallery.utils),function(a,b,c,d){b.State=b.Component.extend({construct:function(a){var b=this;b._super(a),b.apiEnabled=!!window.history&&!!history.replaceState,b.opt=b.tmpl.opt.state,b.enabled=b.opt.enabled,b.pushOrReplace=b.isPushOrReplace(b.opt.pushOrReplace)?b.opt.pushOrReplace:"replace";var c=d.escapeRegExp(b.tmpl.id),e=d.escapeRegExp(b.opt.values),f=d.escapeRegExp(b.opt.pair);b.regex={exists:new RegExp("^#"+c+"\\"+e+".+?"),values:new RegExp("(\\w+)"+f+"([^"+e+"]+)","g")}},destroy:function(){var a=this;a.clear(),a.opt=a.regex={},a._super()},isPushOrReplace:function(b){return-1!==a.inArray(b,["push","replace"])},exists:function(){return this.regex.exists.test(location.hash)&&this.regex.values.test(location.hash)},parse:function(){var b=this,d={};if(b.exists())if(b.enabled){d.id=b.tmpl.id;var e=location.hash.match(b.regex.values);a.each(e,function(e,f){var g=f.split(b.opt.pair);2===g.length&&(d[g[0]]=-1===g[1].indexOf(b.opt.array)?decodeURIComponent(g[1].replace(/\+/g,"%20")):a.map(g[1].split(b.opt.array),function(a){return decodeURIComponent(a.replace(/\+/g,"%20"))}),c.string(d[g[0]])&&!isNaN(d[g[0]])&&(d[g[0]]=parseInt(d[g[0]])))})}else b.apiEnabled?history.replaceState(null,"",location.pathname+location.search):location.hash="#";return d},hashify:function(b){var d=this;if(c.hash(b)){var e=[];return a.each(b,function(b,f){c.empty(f)||"id"===b||(f=c.array(f)?a.map(f,function(a){return encodeURIComponent(a)}).join(d.opt.array):encodeURIComponent(f),e.push(b+d.opt.pair+f))}),e.length>0&&e.unshift("#"+d.tmpl.id),e.join(d.opt.values)}return""},replace:function(a){var b=this;if(b.enabled&&b.apiEnabled){a.id=b.tmpl.id;var d=b.hashify(a),e=c.empty(d);history.replaceState(e?null:a,"",e?location.pathname+location.search:d)}},push:function(a){var b=this;if(b.enabled&&b.apiEnabled){a.id=b.tmpl.id;var d=b.hashify(a),e=c.empty(d);history.pushState(e?null:a,"",e?location.pathname+location.search:d)}},update:function(a,b){var c=this;c.enabled&&c.apiEnabled&&(b=c.isPushOrReplace(b)?b:c.pushOrReplace,c[b](a))},clear:function(){this.exists()&&this.replace({})},initial:function(){var a=this,b=a.tmpl,d={};return b.filter&&!c.empty(b.filter.current)&&(d.f=b.filter.current),b.pages&&b.pages.current>1&&(d.p=b.pages.current),d},get:function(a){var d=this,e=d.tmpl,f={};return a instanceof b.Item&&(f.i=a.id),e.filter&&!c.empty(e.filter.current)&&(f.f=e.filter.current),e.pages&&e.pages.isValid(e.pages.current)&&(f.p=e.pages.current),f},set:function(a){var b=this,d=b.tmpl;if(c.hash(a)){d.items.reset();var e=d.items.get(a.i);if(d.filter){d.filter.rebuild();var f=c.empty(a.f)?[]:a.f;d.filter.set(f,!1)}if(d.pages){d.pages.rebuild();var g=d.pages.number(a.p);e&&!d.pages.contains(g,e)&&(g=d.pages.find(e),g=0!==g?g:1),
10
- d.pages.set(g,!c.empty(a),!1,!0),e&&d.pages.contains(g,e)&&e.scrollTo()}else d.items.detach(d.items.all()),d.items.create(d.items.available(),!0),e&&e.scrollTo();c.empty(a.i)||(a.i=null,b.replace(a))}}}),b.template.configure("core",{state:{enabled:!1,pushOrReplace:"replace",values:"/",pair:":",array:"+"}}),b.components.register("state",b.State)}(FooGallery.$,FooGallery,FooGallery.utils.is,FooGallery.utils.str),function(a,b,c,d,e,f){b.Item=b.Component.extend({construct:function(a,b){var c=this;c._super(a),c.cls=a.cls.item,c.il8n=a.il8n.item,c.sel=a.sel.item,c.opt=f.extend({},a.opt.item,b),c.isAttached=!1,c.isCreated=!1,c.isDestroyed=!1,c.isLoading=!1,c.isLoaded=!1,c.isError=!1,c.isParsed=!1,c.$el=null,c.$inner=null,c.$anchor=null,c.$wrap=null,c.$image=null,c.$caption=null,c.type=c.opt.type,c.id=c.opt.id,c.href=c.opt.href,c.src=c.opt.src,c.srcset=c.opt.srcset,c.width=c.opt.width,c.height=c.opt.height,c.title=c.opt.title,c.alt=c.opt.alt,c.caption=d.empty(c.opt.caption)?c.title:c.opt.caption,c.description=d.empty(c.opt.description)?c.alt:c.opt.description,c.attr=c.opt.attr,c.tags=c.opt.tags,c.maxWidth=c.opt.maxWidth,c.maxCaptionLength=c.opt.maxCaptionLength,c.maxDescriptionLength=c.opt.maxDescriptionLength,c.showCaptionTitle=c.opt.showCaptionTitle,c.showCaptionDescription=c.opt.showCaptionDescription,c._thumbUrl=null,c._placeholder=null,c._load=null,c._undo={classes:"",style:"",loader:!1,wrap:!1,placeholder:!1}},destroy:function(){var a=this;return a.tmpl.raise("destroy-item",[a]).isDefaultPrevented()||(a.isDestroyed=a.doDestroyItem()),a.isDestroyed&&(a.tmpl.raise("destroyed-item",[a]),a._super()),a.isDestroyed},doDestroyItem:function(){var a=this;return a.isParsed?(a.append(),d.empty(a._undo.classes)?a.$el.removeAttr("class"):a.$el.attr("class",a._undo.classes),d.empty(a._undo.style)?a.$el.removeAttr("style"):a.$el.attr("style",a._undo.style),a._undo.wrap&&a.$image.unwrap(),a._undo.loader&&a.$el.find(a.sel.loader).remove(),a._undo.placeholder&&a.$image.prop("src")==a._placeholder&&a.$image.removeAttr("src")):a.isCreated&&(a.detach(),a.$el.remove()),!0},parse:function(b){var c=this,d=a(b);return!c.tmpl.raise("parse-item",[c,d]).isDefaultPrevented()&&(c.isCreated=d.is(c.sel.elem))&&(c.isParsed=c.doParseItem(d),c.fix()),c.isParsed&&c.tmpl.raise("parsed-item",[c]),c.isParsed},doParseItem:function(c){var e=this,f=e.tmpl.opt,g=e.cls,h=e.sel;return e._undo.classes=c.attr("class")||"",e._undo.style=c.attr("style")||"",e.$el=c.data(b.dataItem,e),e.$inner=e.$el.find(h.inner),e.$anchor=e.$el.find(h.anchor).on("click.foogallery",{self:e},e.onAnchorClick),e.$image=e.$anchor.find(h.image),e.$caption=e.$el.find(h.caption.elem).on("click.foogallery",{self:e},e.onCaptionClick),e.isAttached=e.$el.parent().length>0,e.isLoading=e.$el.is(h.loading),e.isLoaded=e.$el.is(h.loaded),e.isError=e.$el.is(h.error),e.id=e.$anchor.data("id")||e.id,e.tags=e.$anchor.data("tags")||e.tags,e.href=e.$anchor.attr("href")||e.href,e.src=e.$image.attr(f.src)||e.src,e.srcset=e.$image.attr(f.srcset)||e.srcset,e.width=parseInt(e.$image.attr("width"))||e.width,e.height=parseInt(e.$image.attr("height"))||e.height,e.title=e.$image.attr("title")||e.title,e.alt=e.$image.attr("alt")||e.alt,e.caption=e.$anchor.data("title")||e.$anchor.data("captionTitle")||e.caption||e.title,e.description=e.$anchor.data("description")||e.$anchor.data("captionDesc")||e.description||e.alt,d.empty(e.caption)&&(e.caption=a.trim(e.$caption.find(h.caption.title).html())),d.empty(e.description)&&(e.description=a.trim(e.$caption.find(h.caption.description).html())),d.number(e.maxCaptionLength)&&e.maxCaptionLength>0&&!d.empty(e.caption)&&d.string(e.caption)&&e.caption.length>e.maxCaptionLength&&e.$caption.find(h.caption.title).html(e.caption.substr(0,e.maxCaptionLength)+"&hellip;"),d.number(e.maxDescriptionLength)&&e.maxDescriptionLength>0&&!d.empty(e.description)&&d.string(e.description)&&e.description.length>e.maxDescriptionLength&&e.$caption.find(h.caption.description).html(e.description.substr(0,e.maxDescriptionLength)+"&hellip;"),0===e.$anchor.find(h.wrap).length&&(e.$image.wrap(a("<span/>",{class:g.wrap})),e._undo.wrap=!0),0===e.$el.find(h.loader).length&&(e.$el.append(a("<div/>",{class:g.loader})),e._undo.loader=!0),d.empty(e.$image.prop("src"))&&(e._placeholder=e.tmpl.items.placeholder(e.width,e.height),e.$image.prop("src",e._placeholder),e._undo.placeholder=!0),!e.isCreated||!e.isAttached||e.isLoading||e.isLoaded||e.isError||e.$el.addClass(g.idle),!0},create:function(){var a=this;if(!a.isCreated&&d.string(a.href)&&d.string(a.src)&&d.number(a.width)&&d.number(a.height)){a.tmpl.raise("create-item",[a]).isDefaultPrevented()||(a.isCreated=a.doCreateItem()),a.isCreated&&a.tmpl.raise("created-item",[a])}return a.isCreated},doCreateItem:function(){var c=this,e=c.tmpl.opt,f=c.cls,g=c.attr;g.elem.class=f.elem+" "+f.idle,g.inner.class=f.inner,g.anchor.class=f.anchor,g.anchor.href=c.href,g.anchor["data-id"]=c.id,g.anchor["data-title"]=c.caption,g.anchor["data-description"]=c.description,d.empty(c.tags)||(g.anchor["data-tags"]=JSON.stringify(c.tags)),g.image.class=f.image,g.image.src=c.tmpl.items.placeholder(c.width,c.height),g.image[e.src]=c.src,g.image[e.srcset]=c.srcset,g.image.width=c.width,g.image.height=c.height,g.image.title=c.title,g.image.alt=c.alt,c.$el=a("<div/>").attr(g.elem).data(b.dataItem,c),c.$inner=a("<figure/>").attr(g.inner).appendTo(c.$el),c.$anchor=a("<a/>").attr(g.anchor).appendTo(c.$inner).on("click.foogallery",{self:c},c.onAnchorClick);var h=a("<span/>",{class:f.wrap}).appendTo(c.$anchor);c.$image=a("<img/>").attr(g.image).appendTo(h),f=c.cls.caption,g=c.attr.caption,g.elem.class=f.elem,c.$caption=a("<figcaption/>").attr(g.elem).on("click.foogallery",{self:c},c.onCaptionClick),g.inner.class=f.inner;var i=a("<div/>").attr(g.inner).appendTo(c.$caption),j=c.showCaptionTitle&&!d.empty(c.caption),k=c.showCaptionDescription&&!d.empty(c.description);if(j||k){if(g.title.class=f.title,g.description.class=f.description,j){var l;l=d.number(c.maxCaptionLength)&&c.maxCaptionLength>0&&d.string(c.caption)&&c.caption.length>c.maxCaptionLength?a("<div/>").attr(g.title).html(c.caption.substr(0,c.maxCaptionLength)+"&hellip;"):a("<div/>").attr(g.title).html(c.caption),i.append(l)}if(k){var m;m=d.number(c.maxDescriptionLength)&&c.maxDescriptionLength>0&&d.string(c.description)&&c.description.length>c.maxDescriptionLength?a("<div/>").attr(g.description).html(c.description.substr(0,c.maxDescriptionLength)+"&hellip;"):a("<div/>").attr(g.description).html(c.description),i.append(m)}}return c.$caption.appendTo(c.$inner),0===c.$el.find(c.sel.loader).length&&c.$el.append(a("<div/>",{class:c.cls.loader})),!0},append:function(){var a=this;if(a.isCreated&&!a.isAttached){a.tmpl.raise("append-item",[a]).isDefaultPrevented()||(a.tmpl.$el.append(a.$el),a.fix(),a.isAttached=!0),a.isAttached&&a.tmpl.raise("appended-item",[a])}return a.isAttached},detach:function(){var a=this;if(a.isCreated&&a.isAttached){a.tmpl.raise("detach-item",[a]).isDefaultPrevented()||(a.$el.detach(),a.unfix(),a.isAttached=!1),a.isAttached||a.tmpl.raise("detached-item",[a])}return!a.isAttached},load:function(){var b=this;if(d.promise(b._load))return b._load;if(!b.isCreated||!b.isAttached)return e.rejectWith("not created or attached");if(b.tmpl.raise("load-item",[b]).isDefaultPrevented())return e.rejectWith("default prevented");var c=b.cls,f=b.$image.get(0),g=f.src;return b.isLoading=!0,b.$el.removeClass(c.idle).removeClass(c.loaded).removeClass(c.error).addClass(c.loading),b._load=a.Deferred(function(a){f.onload=function(){f.onload=f.onerror=null,b.isLoading=!1,b.isLoaded=!0,b.$el.removeClass(c.loading).addClass(c.loaded),b.unfix(),b.tmpl.raise("loaded-item",[b]),a.resolve(b)},f.onerror=function(){f.onload=f.onerror=null,b.isLoading=!1,b.isError=!0,b.$el.removeClass(c.loading).addClass(c.error),d.string(g)&&b.$image.prop("src",g),b.tmpl.raise("error-item",[b]),a.reject(b)},f.src=b.getThumbUrl(),f.complete&&f.onload()}).promise()},fix:function(){var a=this;if(null==a.tmpl)return a;if(!a.tmpl.raise("fix-item",[a]).isDefaultPrevented()&&a.isCreated&&!a.isLoading&&!a.isLoaded&&!a.isError){var b=a.width,c=a.height;if(!isNaN(b)&&!isNaN(c)){var e=d.fn(a.maxWidth)?a.maxWidth(a):a.$image.width();e<=0&&(e=b);var f=e/b,g=c*f;a.$image.css({width:e,height:g})}}return a},unfix:function(){var a=this;return null==a.tmpl?a:(!a.tmpl.raise("unfix-item",[a]).isDefaultPrevented()&&a.isCreated&&a.$image.css({width:"",height:""}),a)},getThumbUrl:function(a){a=!!d.boolean(a)&&a;var c=this;return!a&&d.string(c._thumbUrl)?c._thumbUrl:c._thumbUrl=b.parseSrc(c.src,c.width,c.height,c.srcset,c.$anchor.innerWidth(),c.$anchor.innerHeight())},scrollTo:function(a){var b=this;if(b.isAttached){var d=b.bounds(),e=c.getViewportBounds();switch(a){case"top":d.left+=d.width/2-e.width/2,d.top-=e.height/5;break;default:d.left+=d.width/2-e.width/2,d.top+=d.height/2-e.height/2}window.scrollTo(d.left,d.top)}return b},bounds:function(){return this.isAttached?c.getElementBounds(this.$el):null},intersects:function(a){return!!this.isAttached&&this.bounds().intersects(a)},onAnchorClick:function(a){var b=a.data.self,c=b.tmpl.state.get(b);b.tmpl.state.update(c)},onCaptionClick:function(a){var b=a.data.self;b.$anchor.length>0&&b.$anchor.get(0).click()}}),b.template.configure("core",{item:{type:"item",id:"",href:"",src:"",srcset:"",width:0,height:0,title:"",alt:"",caption:"",description:"",tags:[],maxWidth:null,maxCaptionLength:0,maxDescriptionLength:0,showCaptionTitle:!0,showCaptionDescription:!0,attr:{elem:{},inner:{},anchor:{},image:{},caption:{elem:{},inner:{},title:{},description:{}}}}},{item:{elem:"fg-item",inner:"fg-item-inner",anchor:"fg-thumb",wrap:"fg-image-wrap",image:"fg-image",loader:"fg-loader",idle:"fg-idle",loading:"fg-loading",loaded:"fg-loaded",error:"fg-error",caption:{elem:"fg-caption",inner:"fg-caption-inner",title:"fg-caption-title",description:"fg-caption-desc"}}},{item:{}}),b.components.register("item",b.Item)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(a,b,c,d,e,f){b.Items=b.Component.extend({construct:function(a){var b=this;b._super(a),b.idMap={},b._fetched=null,b._arr=[],b._available=[],b._canvas=document.createElement("canvas");var d=b.tmpl.cls.item.caption;b.tmpl.sel.item.caption.all=c.selectify([d.elem,d.inner,d.title,d.description])},destroy:function(){var b=this,c=b.all(),d=[];c.length>0&&(b.tmpl.raise("destroy-items",[c]),d=a.map(c,function(a){return a.destroy()?a:null}),d.length>0&&b.tmpl.raise("destroyed-items",[d])),b.idMap={},b._canvas=b._fetched=null,b._arr=[],b._available=[],b._super()},fetch:function(b){var c=this;if(!b&&d.promise(c._fetched))return c._fetched;var e=c.tmpl,f=e.sel,g=e.opt.items,h=a.Deferred(),i=c.make(e.$el.find(f.item.elem));return d.empty(g)?(i.push.apply(i,c.make(window[e.id+"-items"])),h.resolve(i)):d.array(g)?(i.push.apply(i,c.make(g)),h.resolve(i)):d.string(g)?a.get(g).then(function(a){i.push.apply(i,c.make(a)),h.resolve(i)},function(a,b,c){console.log("FooGallery: GET items error.",g,a,b,c),h.resolve(i)}):h.resolve(i),h.then(function(a){c.setAll(a)}),c._fetched=h.promise()},all:function(){return this._arr.slice()},count:function(a){return a?this.all().length:this.available().length},available:function(){return this._available.slice()},get:function(a){return!d.empty(a)&&this.idMap[a]?this.idMap[a]:null},setAll:function(a){this._arr=d.array(a)?a:[],this.idMap=this.createIdMap(a),this._available=this.all()},setAvailable:function(a){this._available=d.array(a)?a:[]},reset:function(){this.setAvailable(this.all())},placeholder:function(a,c){return this._canvas&&this._canvas.toDataURL&&d.number(a)&&d.number(c)?(this._canvas.width=a,this._canvas.height=c,this._canvas.toDataURL()):b.emptyImage},loadable:function(b){var e,f=this,g=f.tmpl.opt;return g.lazy&&(e=c.getViewportBounds(g.viewport)),d.array(b)?a.map(b,function(a){return a.isCreated&&a.isAttached&&!a.isLoading&&!a.isLoaded&&!a.isError&&(!g.lazy||g.lazy&&a.intersects(e))?a:null}):[]},creatable:function(c){return d.array(c)?a.map(c,function(a){return a instanceof b.Item&&!a.isCreated?a:null}):[]},appendable:function(c){return d.array(c)?a.map(c,function(a){return a instanceof b.Item&&a.isCreated&&!a.isAttached?a:null}):[]},detachable:function(c){return d.array(c)?a.map(c,function(a){return a instanceof b.Item&&a.isCreated&&a.isAttached?a:null}):[]},jquerify:function(b){return a(a.map(b,function(a){return a.$el.get()}))},make:function(c){var e=this,g=[];if(d.jq(c)||d.array(c)){var h=[],i=a.makeArray(c);if(0===i.length)return g;e.tmpl.raise("make-items",[i]).isDefaultPrevented()||(g=a.map(i,function(a){var c=e.type(a),g=f.extend(d.hash(a)?a:{},{type:c}),i=b.components.make(c,e.tmpl,g);return d.element(a)?i.parse(a)?(h.push(i),i):null:i})),g.length>0&&e.tmpl.raise("made-items",[g]),h.length>0&&e.tmpl.raise("parsed-items",[h])}return g},type:function(c){var e;if(d.hash(c))e=c.type;else if(d.element(c)){var f=a(c),g=this.tmpl.sel.item;e=f.find(g.anchor).data("type")}return d.string(e)&&b.components.contains(e)?e:"item"},create:function(b,c){var e=this,f=[],g=e.creatable(b);if(g.length>0){e.tmpl.raise("create-items",[g]).isDefaultPrevented()||(f=a.map(g,function(a){return a.create()?a:null})),f.length>0&&e.tmpl.raise("created-items",[f])}return d.boolean(c)&&c?e.append(b):f},append:function(b){var c=this,d=[],e=c.appendable(b);if(e.length>0){c.tmpl.raise("append-items",[e]).isDefaultPrevented()||(d=a.map(e,function(a){return a.append()?a:null})),d.length>0&&c.tmpl.raise("appended-items",[d])}return d},detach:function(b){var c=this,d=[],e=c.detachable(b);if(e.length>0){c.tmpl.raise("detach-items",[e]).isDefaultPrevented()||(d=a.map(e,function(a){return a.detach()?a:null})),d.length>0&&c.tmpl.raise("detached-items",[d])}return d},load:function(b){var c=this;if(b=c.loadable(b),b.length>0){if(!c.tmpl.raise("load-items",[b]).isDefaultPrevented()){var d=a.map(b,function(a){return a.load()});return e.when(d).done(function(a){c.tmpl.raise("loaded-items",[a])})}}return e.resolveWith([])},createIdMap:function(b){var c={};return a.each(b,function(a,b){d.empty(b.id)&&(b.id=""+(a+1)),c[b.id]=b}),c}}),b.components.register("items",b.Items)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(a,b,c,d){b.Paging=b.Component.extend({construct:function(a){var b=this;b._super(a),b.opt=b.tmpl.opt.paging,b.cls=b.tmpl.cls.paging,b.il8n=b.tmpl.il8n.paging,b.sel=b.tmpl.sel.paging,b.pushOrReplace=b.opt.pushOrReplace,b.type=b.opt.type,b.theme=b.opt.theme,b.size=b.opt.size,b.position=b.opt.position,b.scrollToTop=b.opt.scrollToTop,b.current=0,b.total=0,b.ctrls=[],b._arr=[]},destroy:function(){var b=this;b._arr.splice(0,b._arr.length),a.each(b.ctrls.splice(0,b.ctrls.length),function(a,b){b.destroy()}),b._super()},build:function(){var a=this,c=a.tmpl.items.available();a.total=a.size>0&&c.length>0?Math.ceil(c.length/a.size):1;for(var d=0;d<a.total;d++)a._arr.push(c.splice(0,a.size));if(a.total>1&&b.paging.hasCtrl(a.type)){var e,f,g=a.position;"both"!==g&&"top"!==g||(e=b.paging.makeCtrl(a.type,a.tmpl,a,"top"),e.create()&&(e.append(),a.ctrls.push(e))),"both"!==g&&"bottom"!==g||(f=b.paging.makeCtrl(a.type,a.tmpl,a,"bottom"),f.create()&&(f.append(),a.ctrls.push(f)))}},rebuild:function(){var b=this;b.current=0,b.total=0,b._arr.splice(0,b._arr.length),a.each(b.ctrls.splice(0,b.ctrls.length),function(a,b){b.destroy()}),b.build()},all:function(){return this._arr.slice()},available:function(){return this.get(this.current)},controls:function(b){var c=this;c.isValid(b)&&a.each(c.ctrls,function(a,c){c.update(b)})},isValid:function(a){return d.number(a)&&a>0&&a<=this.total},number:function(a){return this.isValid(a)?a:0===this.current?1:this.current},create:function(a,b){var c=this;a=c.number(a);var d=a-1;c.tmpl.items.detach(c.tmpl.items.all()),c.tmpl.items.create(c._arr[d],!0),c.current=a},get:function(a){var b=this;return b.isValid(a)?(a=b.number(a),b._arr[a-1]):[]},set:function(a,b,c,e){var f=this;if(f.isValid(a)){var g,h=f.number(a);if(h!==f.current){var i=f.current,j=function(){if(c=!d.boolean(c)||c,e=!!d.boolean(e)&&e,c&&1===f.current&&!f.tmpl.state.exists()&&(g=f.tmpl.state.get(),f.tmpl.state.update(g,f.pushOrReplace)),f.controls(a),f.create(h,e),c&&(g=f.tmpl.state.get(),f.tmpl.state.update(g,f.pushOrReplace)),f.scrollToTop&&d.boolean(b)&&b){var j=f.get(f.current);j.length>0&&j[0].scrollTo("top")}f.tmpl.raise("after-page-change",[f.current,i,e])};return!f.tmpl.raise("before-page-change",[f.current,h,j,e]).isDefaultPrevented()&&(j(),!0)}}return!1},find:function(b){for(var c=this,d=0,e=c._arr.length;d<e;d++)if(-1!==a.inArray(b,c._arr[d]))return d+1;return 0},contains:function(b,c){var d=this.get(b);return-1!==a.inArray(c,d)},first:function(){this.goto(1)},last:function(){this.goto(this._arr.length)},prev:function(){this.goto(this.current-1)},next:function(){this.goto(this.current+1)},goto:function(a){var b=this;b.set(a,!0)&&b.tmpl.loadAvailable()}}),b.PagingControl=b.Component.extend({construct:function(a,b,c){var d=this;d._super(a),d.pages=b,d.position=c,d.$container=null},create:function(){var b=this;return b.$container=a("<nav/>",{class:b.pages.cls.container}).addClass(b.pages.theme),!0},destroy:function(){var a=this;a.$container.remove(),a.$container=null},append:function(){var a=this;"top"===a.position?a.$container.insertBefore(a.tmpl.$el):a.$container.insertAfter(a.tmpl.$el)},update:function(a){}}),b.paging.register("default",b.Paging,null,{type:"none",theme:"fg-light",size:30,pushOrReplace:"push",position:"none",scrollToTop:!0},{container:"fg-paging-container"},null,-100)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(a,b,c,d){b.Dots=b.Paging.extend({}),b.DotsControl=b.PagingControl.extend({construct:function(b,c,d){this._super(b,c,d),this.$container=a(),this.$list=a(),this.$items=a()},create:function(){for(var b,c=this,d=c.pages.cls,e=c.pages.il8n,f=[],g=a("<ul/>",{class:d.list}),h=0,i=c.pages.total;h<i;h++)f.push(b=c.createItem(h+1,e.page)),g.append(b);return c.$list=g,c.$container=a("<nav/>",{class:d.container}).addClass(c.pages.theme).append(g),c.$items=a(a.map(f,function(a){return a.get()})),!0},append:function(){var a=this;"top"===a.position?a.$container.insertBefore(a.tmpl.$el):a.$container.insertAfter(a.tmpl.$el)},destroy:function(){var b=this,c=b.pages.sel;b.$list.find(c.link).off("click.foogallery",b.onLinkClick),b.$container.remove(),b.$container=a(),b.$list=a(),b.$items=a()},update:function(a){this.setSelected(a-1)},setSelected:function(b){var c=this,e=c.pages.cls,f=c.pages.il8n,g=c.pages.sel;c.$items.filter(g.selected).removeClass(e.selected).each(function(b,c){var e=a(c),f=e.data("label"),h=e.find(g.reader);d.string(f)&&0!==h.length&&h.html(f)}),c.$items.eq(b).addClass(e.selected).each(function(b,c){var e=a(c),h=e.find(g.reader),i=h.html();d.string(i)&&0!==h.length&&(e.data("label",i),h.html(f.current))})},createItem:function(b,c,e,f,g){e=d.string(e)?e:b,c=d.string(c)?c:"";var h=this,i=h.pages.opt,j=h.pages.cls,k=a("<a/>",{class:j.link,href:"#page-"+b}).html(e).on("click.foogallery",{self:h,page:b},h.onLinkClick);d.empty(c)||k.attr("title",c.replace(/\{PAGE}/g,b).replace(/\{LIMIT}/g,i.limit+"")),g=d.string(g)?g:c,d.empty(g)||k.prepend(a("<span/>",{class:j.reader,text:g.replace(/\{PAGE}/g,"").replace(/\{LIMIT}/g,i.limit+"")}));var l=a("<li/>",{class:j.item}).append(k);return f=d.string(f)?f:"",d.empty(f)||l.addClass(f),l},onLinkClick:function(b){b.preventDefault();var c=b.data.self,d=b.data.page,e=c.pages.sel;a(this).closest(e.item).is(e.disabled)||(c.pages.set(d,!0),c.tmpl.loadAvailable())}}),b.paging.register("dots",b.Dots,b.DotsControl,{type:"dots",position:"both",pushOrReplace:"push"},{list:"fg-dots",item:"fg-dot-item",link:"fg-dot-link",disabled:"fg-disabled",selected:"fg-selected",visible:"fg-visible",reader:"fg-sr-only"},{current:"Current page",page:"Page {PAGE}"})}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(a,b,c){b.DefaultTemplate=b.Template.extend({}),b.template.register("default",b.DefaultTemplate,null,{container:"foogallery fg-default"})}(FooGallery.$,FooGallery,FooGallery.utils),function(a,b,c,d){b.MasonryTemplate=b.Template.extend({construct:function(a,b){this._super(a,b),this.masonry=null,this.style=null,this.$columnWidth=null},getStylesheet:function(){var a=this;return null===a.style&&(a.style=document.createElement("style"),a.style.appendChild(document.createTextNode("")),document.head.appendChild(a.style)),a.style.sheet},onPreInit:function(b,c){var e=c.sel,f=c.cls;f.layouts=a.map(f.layout,function(a){return a}).join(" ");for(var g=a.map(f.layout,function(a,b){return{key:b,value:a}}),h=0,i=g.length;h<i;h++)if(c.$el.hasClass(g[h].value)){c.template.layout=g[h].key;break}d.string(f.layout[c.template.layout])||(c.template.layout="col4");var j,k,l="fixed"===c.template.layout;if(c.template.isFitWidth=l,c.template.percentPosition=!l,c.template.transitionDuration=0,c.template.itemSelector=e.item.elem,c.$el.removeClass(f.layouts).addClass(f.layout[c.template.layout]),l||(0===c.$el.find(e.gutterWidth).length&&c.$el.prepend(a("<div/>").addClass(f.gutterWidth)),c.template.gutter=e.gutterWidth),0===c.$el.find(e.columnWidth).length&&c.$el.prepend(a("<div/>").addClass(f.columnWidth)),l&&d.number(c.template.columnWidth)){var m=c.$el.find(e.columnWidth).width(c.template.columnWidth);j=c.getStylesheet(),k="#"+c.id+e.container+" "+e.item.elem+" { width: "+m.outerWidth()+"px; }",j.insertRule(k,0)}c.template.columnWidth=e.columnWidth,l&&d.number(c.template.gutter)&&(j=c.getStylesheet(),k="#"+c.id+e.container+" "+e.item.elem+" { margin-bottom: "+c.template.gutter+"px; }",j.insertRule(k,0)),c.masonry=new Masonry(c.$el.get(0),c.template)},onPostInit:function(a,b){b.masonry.layout()},onFirstLoad:function(a,b){b.masonry.layout()},onReady:function(a,b){b.masonry.layout()},onDestroy:function(a,b){b.$el.find(b.sel.columnWidth).remove(),b.$el.find(b.sel.gutterWidth).remove(),b.style&&b.style.parentNode&&b.style.parentNode.removeChild(b.style)},onDestroyed:function(a,b){b.masonry instanceof Masonry&&b.masonry.destroy()},onLayout:function(a,b){b.masonry.layout()},onParsedItems:function(a,b,c){b.masonry.layout()},onAppendedItems:function(a,b,c){c=b.items.jquerify(c),c=b.masonry.addItems(c),b.masonry.layoutItems(c,!0)},onDetachItem:function(a,b,c){a.isDefaultPrevented()||(a.preventDefault(),b.masonry.remove(c.$el),c.isAttached=!1,c.unfix())},onDetachedItems:function(a,b,c){b.masonry.layout()},onLoadedItems:function(a,b,c){b.masonry.layout()}}),b.template.register("masonry",b.MasonryTemplate,{template:{initLayout:!1,isInitLayout:!1,layout:"col4"}},{container:"foogallery fg-masonry",columnWidth:"fg-column-width",gutterWidth:"fg-gutter-width",layout:{fixed:"fg-masonry-fixed",col2:"fg-masonry-2col",col3:"fg-masonry-3col",col4:"fg-masonry-4col",col5:"fg-masonry-5col"}})}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(a,b,c,d){b.Justified=c.Class.extend({construct:function(c,d){this.$el=a(c),this.options=a.extend(!0,{},b.Justified.defaults,d),this._items=[],this._lastRefresh=0,this._refresh=null},init:function(){var b=this;d.string(b.options.maxRowHeight)&&(b.options.maxRowHeight.indexOf("%")?b.options.maxRowHeight=b.options.rowHeight*(parseInt(b.options.maxRowHeight)/100):b.options.maxRowHeight=parseInt(b.options.maxRowHeight)),a(window).on("resize.justified",{self:b},b.onWindowResize),this._refresh=setInterval(function(){b.refresh()},b.options.refreshInterval)},destroy:function(){this._refresh&&clearInterval(this._refresh),a(window).off("resize.justified"),this.$el.removeAttr("style")},refresh:function(){var a=this.getContainerWidth();a!=this._lastRefresh&&(this.layout(),this._lastRefresh=a)},parse:function(){var b=this,c=b.$el.is(":visible"),d=a("<div/>",{class:b.$el.attr("class")}).css({position:"absolute",top:0,left:-9999,visibility:"hidden",maxWidth:b.getContainerWidth()}).appendTo("body");return b._items=b.$el.find(b.options.itemSelector).removeAttr("style").removeClass("fg-positioned").map(function(b,e){var f=a(e),g=0,h=0;if(c)g=f.outerWidth(),h=f.outerHeight();else{var i=f.clone();i.appendTo(d),g=i.outerWidth(),h=i.outerHeight()}return{index:b,width:g,height:h,top:0,left:0,$item:f}}).get(),d.remove(),b._items},getMaxRowHeight:function(){var a=this;return d.string(a.options.maxRowHeight)&&(a.options.maxRowHeight.indexOf("%")?a.options.maxRowHeight=a.options.rowHeight*(parseInt(a.options.maxRowHeight)/100):a.options.maxRowHeight=parseInt(a.options.maxRowHeight)),d.number(a.options.maxRowHeight)?a.options.maxRowHeight:a.options.rowHeight},getContainerWidth:function(){var a=this;return a.$el.is(":visible")?a.$el.width():a.$el.parents(":visible:first").innerWidth()},layout:function(b,c){b=!!d.boolean(b)&&b,c=!d.boolean(c)||c,(b||0===this._items.length)&&this.parse();var e=this,f=0,g=e.getContainerWidth(),h=e.getMaxRowHeight(),i=e.rows(g,h);a.each(i,function(a,b){b.visible&&(a>0&&(f+=e.options.margins),f+=b.height,e.render(b))}),e.$el.height(f),c&&e.getContainerWidth()<g&&e.layout(!1,!1)},render:function(a){for(var b,c=0,d=a.items.length;c<d;c++)b=a.items[c],a.visible?b.$item.css({width:b.width,height:b.height,top:b.top,left:b.left,display:"",maxHeight:this.options.maxRowHeight>0?this.options.maxRowHeight:""}).addClass("fg-positioned"):b.$item.css("display","none")},justify:function(a,b,c,d){var e=this,f=e.options.margins*(a.items.length-1),g=c-f,h=g/a.width;a.width=a.width*h,a.height=a.height*h,a.top=b,a.height>d&&(a.height=d),a.left=0,a.width<g&&(a.left=(g-a.width)/2),a.width+=f;for(var i,j=a.left,k=0,l=a.items.length;k<l;k++)k>0&&(j+=e.options.margins),i=a.items[k],i.left=j,i.top=b,i.width=i.width*h,i.height=i.height*h,i.height>d&&(i.height=d),j+=i.width;return a.height},position:function(a,b,c,d){var e=this,f=e.options.margins*(a.items.length-1),g=c-f;if(a.top=b,a.left=0,a.width<g)switch(d){case"center":a.left=(g-a.width)/2;break;case"right":a.left=g-a.width}a.width+=f;for(var h,i=a.left,j=0,k=a.items.length;j<k;j++)j>0&&(i+=e.options.margins),h=a.items[j],h.left=i,h.top=b,i+=h.width;return a.height},lastRow:function(a,b,c,d){var e=this,f=e.options.margins*(a.items.length-1),g=c-f,h=a.width/g>e.options.justifyThreshold;switch(e.options.lastRow){case"hide":h?e.justify(a,b,c,d):a.visible=!1;break;case"justify":e.justify(a,b,c,d);break;case"nojustify":h?e.justify(a,b,c,d):e.position(a,b,c,"left");break;case"left":case"center":case"right":h?e.justify(a,b,c,d):e.position(a,b,c,e.options.lastRow)}},items:function(){return a.map(this._items,function(a){return{index:a.index,width:a.width,height:a.height,$item:a.$item,top:a.top,left:a.left}})},rows:function(a,b){function c(){var a={index:++h,visible:!0,width:0,height:e.options.rowHeight,top:0,left:0,items:[]};return g.push(a),a}for(var d,e=this,f=e.items(),g=[],h=-1,i=c(),j=0,k=0,l=0,m=f.length;l<m;l++){if(d=f[l],d.height!=e.options.rowHeight){var n=e.options.rowHeight/d.height;d.height=d.height*n,d.width=d.width*n}k+d.width>a&&l>0&&(g.length>1&&(j+=e.options.margins),j+=e.justify(i,j,a,b),i=c(),k=0),i.items.length>0&&(k+=e.options.margins),k+=d.width,i.width+=d.width,i.items.push(d)}return g.length>1&&(j+=e.options.margins),e.lastRow(i,j,a,b),g},onWindowResize:function(a){a.data.self.layout()}}),b.Justified.defaults={itemSelector:".fg-item",rowHeight:150,maxRowHeight:"200%",margins:0,lastRow:"center",justifyThreshold:.5,refreshInterval:250}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(a,b,c){b.JustifiedTemplate=b.Template.extend({onPreInit:function(a,c){c.justified=new b.Justified(c.$el.get(0),c.template)},onInit:function(a,b){b.justified.init()},onFirstLoad:function(a,b){b.justified.layout(!0)},onReady:function(a,b){b.justified.layout(!0)},onDestroy:function(a,b){b.justified.destroy()},onLayout:function(a,b){b.justified.layout(!0)},onParsedItems:function(a,b,c){(b.initialized||b.initializing)&&b.justified.layout(!0)},onAppendedItems:function(a,b,c){(b.initialized||b.initializing)&&b.justified.layout(!0)},onDetachedItems:function(a,b,c){b.initialized&&b.justified.layout(!0)}}),b.template.register("justified",b.JustifiedTemplate,null,{container:"foogallery fg-justified"})}(FooGallery.$,FooGallery,FooGallery.utils),function(a,b,c,d){b.Portfolio=c.Class.extend({construct:function(c,d){this.$el=a(c),this.options=a.extend(!0,{},b.Portfolio.defaults,d),this._items=[],this._lastWidth=0},init:function(){var b=this;a(window).on("resize.portfolio",{self:b},b.onWindowResize)},destroy:function(){a(window).off("resize.portfolio"),this.$el.removeAttr("style")},parse:function(){var b=this,c=b.$el.is(":visible"),d=b.getContainerWidth(),e=a("<div/>",{class:b.$el.attr("class")}).css({position:"absolute",top:0,left:-9999,visibility:"hidden",maxWidth:d}).appendTo("body");return b._items=b.$el.find(".fg-item").removeAttr("style").removeClass("fg-positioned").map(function(b,f){var g=a(f),h=g.find(".fg-thumb"),i=g.find(".fg-image"),j=parseFloat(i.attr("width")),k=parseFloat(i.attr("height")),l=d<j?d:j,m=d<j?"auto":k;if(g.find(".fg-caption").css("max-width",l),i.css({width:l,height:m}),c)j=g.outerWidth(),k=g.outerHeight();else{var n=g.clone();n.appendTo(e),j=n.outerWidth(),k=n.outerHeight()}return i.css({width:"",height:""}),{index:b,width:j,height:k,top:0,left:0,$item:g,$thumb:h}}).get(),e.remove(),b._items},round:function(a){return Math.round(2*a)/2},getContainerWidth:function(){var a=this;return a.$el.is(":visible")?a.$el.width():a.$el.parents(":visible:first").innerWidth()},layout:function(a,b){a=!!d.boolean(a)&&a,b=!d.boolean(b)||b;var c=this,e=c.getContainerWidth();0!=c._lastWidth&&Math.abs(e-c._lastWidth)>0&&(a=!0,c._lastWidth=e),(a||0===c._items.length)&&c.parse();for(var f,g=c.rows(e),h=0,i=0,j=g.length;i<j;i++)f=g[i],h=c.position(f,e,h,c.options.align),c.render(f);c.$el.height(h),0==c._lastWidth&&(c._lastWidth=e),b&&c.getContainerWidth()<e&&c.layout(!1,!1)},render:function(a){for(var b,c=0,d=a.items.length;c<d;c++)b=a.items[c],a.visible?b.$item.css({width:b.width,height:a.height,top:b.top,left:b.left,display:""}).addClass("fg-positioned"):b.$item.css("display","none")},position:function(a,b,c,d){var e=this,f=a.items[a.items.length-1],g=b-(f.left+f.width);a.index>0&&(c+=e.options.gutter),a.top=c;for(var h,i=0,j=a.items.length;i<j;i++)h=a.items[i],h.top=c,"center"===d?h.left+=g/2:"right"===d&&(h.left+=g);return c+a.height},items:function(){return a.map(this._items,function(a){return{index:a.index,width:a.width,height:a.height,$item:a.$item,$thumb:a.$thumb,top:a.top,left:a.left}})},rows:function(a){for(var b=this,c=b.items(),d=[],e=c.length>0,f=-1,g=0;e;){f+=1,f>0&&(g+=b.options.gutter);for(var h,i,j,k={index:f,visible:!0,top:g,width:0,height:0,items:[]},l=[],m=0,n=0,o=c.length;n<o&&(i=c[n],!((h=k.width+i.width)>a&&n>0));n++)h>a&&0==n&&(h=a,j=a/i.width,i.width=b.round(i.width*j),i.height=b.round(i.height*j),k.height=i.height),i.top=k.top,n>0&&(m+=b.options.gutter),n!==o-1&&(h+=b.options.gutter),i.left=m,m+=i.width,i.height>k.height&&(k.height=i.height),k.width=h,k.items.push(i),l.push(n);if(0===l.length){e=!1;break}l.sort(function(a,b){return b-a});for(var p=0,q=l.length;p<q;p++)c.splice(l[p],1);d.push(k),e=c.length>0}return d},onWindowResize:function(a){a.data.self.layout()}}),b.Portfolio.defaults={gutter:40,align:"center"}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(a,b,c){b.PortfolioTemplate=b.Template.extend({construct:function(a,b){this._super(a,b),this.portfolio=null},onPreInit:function(a,c){c.portfolio=new b.Portfolio(c.$el.get(0),c.template)},onInit:function(a,b){b.portfolio.init()},onFirstLoad:function(a,b){b.portfolio.layout(!0)},onReady:function(a,b){b.portfolio.layout(!0)},onDestroy:function(a,b){b.portfolio.destroy()},onLayout:function(a,b){b.portfolio.layout(!0)},onParsedItems:function(a,b,c){(b.initialized||b.initializing)&&b.portfolio.layout(!0)},onAppendedItems:function(a,b,c){(b.initialized||b.initializing)&&b.portfolio.layout(!0)},onDetachedItems:function(a,b,c){
11
- b.initialized&&b.portfolio.layout(!0)}}),b.template.register("simple_portfolio",b.PortfolioTemplate,{gutter:40},{container:"foogallery fg-simple_portfolio"})}(FooGallery.$,FooGallery,FooGallery.utils),function(a,b,c,d){b.ImageViewerTemplate=b.Template.extend({construct:function(b,c){this._super(d.extend({},b,{paging:{pushOrReplace:"replace",theme:"fg-light",type:"default",size:1,position:"none",scrollToTop:!1}}),c),this.$inner=a(),this.$current=a(),this.$total=a(),this.$prev=a(),this.$next=a()},createChildren:function(){var b=this;return a("<div/>",{class:b.cls.inner}).append(a("<div/>",{class:b.cls.innerContainer}),a("<div/>",{class:b.cls.controls}).append(a("<div/>",{class:b.cls.prev}).append(a("<span/>",{text:b.il8n.prev})),a("<label/>",{class:b.cls.count,text:b.il8n.count}).prepend(a("<span/>",{class:b.cls.countCurrent,text:"0"})).append(a("<span/>",{class:b.cls.countTotal,text:"0"})),a("<div/>",{class:b.cls.next}).append(a("<span/>",{text:b.il8n.next}))))},destroyChildren:function(){var a=this;a.$el.find(a.sel.inner).remove()},onPreInit:function(a,b){b.$inner=b.$el.find(b.sel.innerContainer),b.$current=b.$el.find(b.sel.countCurrent),b.$total=b.$el.find(b.sel.countTotal),b.$prev=b.$el.find(b.sel.prev),b.$next=b.$el.find(b.sel.next)},onInit:function(a,b){b.template.attachFooBox&&b.$el.on("foobox.previous",{self:b},b.onFooBoxPrev).on("foobox.next",{self:b},b.onFooBoxNext),b.$prev.on("click",{self:b},b.onPrevClick),b.$next.on("click",{self:b},b.onNextClick)},onFirstLoad:function(a,b){b.update()},onDestroy:function(a,b){b.template.attachFooBox&&b.$el.off({"foobox.previous":b.onFooBoxPrev,"foobox.next":b.onFooBoxNext}),b.$prev.off("click",b.onPrevClick),b.$next.off("click",b.onNextClick)},onAppendItem:function(a,b,c){a.preventDefault(),b.$inner.append(c.$el),c.fix(),c.isAttached=!0},onAfterPageChange:function(a,b,c,d,e){e||b.update()},onAfterFilterChange:function(a,b){b.update()},update:function(){this.pages&&(this.$current.text(this.pages.current),this.$total.text(this.pages.total))},prev:function(){this.pages&&(this.template.loop&&1===this.pages.current?this.pages.last():this.pages.prev(),this.update())},next:function(){this.pages&&(this.template.loop&&this.pages.current===this.pages.total?this.pages.first():this.pages.next(),this.update())},onFooBoxPrev:function(a){a.data.self.prev()},onFooBoxNext:function(a){a.data.self.next()},onPrevClick:function(a){a.preventDefault(),a.stopPropagation(),a.data.self.prev()},onNextClick:function(a){a.preventDefault(),a.stopPropagation(),a.data.self.next()}}),b.template.register("image-viewer",b.ImageViewerTemplate,{template:{attachFooBox:!1,loop:!1}},{container:"foogallery fg-image-viewer",inner:"fiv-inner",innerContainer:"fiv-inner-container",controls:"fiv-ctrls",prev:"fiv-prev",next:"fiv-next",count:"fiv-count",countCurrent:"fiv-count-current",countTotal:"fiv-count-total"},{prev:"Prev",next:"Next",count:"of"})}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.obj),function(a,b,c){b.ThumbnailTemplate=b.Template.extend({construct:function(a,b){this._super(c.extend({},a,{filtering:{type:"none"},paging:{pushOrReplace:"replace",theme:"fg-light",type:"default",size:1,position:"none",scrollToTop:!1}}),b)}}),b.template.register("thumbnail",b.ThumbnailTemplate,null,{container:"foogallery fg-thumbnail"})}(FooGallery.$,FooGallery,FooGallery.utils.obj),function(a,b,c,d){b.triggerPostLoad=function(b,c,d,e,f){if("first-load"===b.type||c.initialized&&("after-page-change"===b.type&&!f||"after-filter-change"===b.type))try{if(c.$el.parents(".fbx-item").length>0)return;a("body").trigger("post-load")}catch(a){console.error(a)}},b.autoDefaults={on:{"first-load.foogallery after-page-change.foogallery after-filter-change.foogallery":b.triggerPostLoad}},b.auto=function(a){b.autoDefaults=d.merge(b.autoDefaults,a)},b.load=b.reload=function(){a(function(){a('[id^="foogallery-gallery-"]:not(.fg-ready)').foogallery(b.autoDefaults)}),c.ready(function(){a('[id^="foogallery-gallery-"].fg-ready').foogallery(b.autoDefaults)})},b.load()}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.obj);
1
  /*
2
  * FooGallery - The Most Intuitive and Extensible Gallery Creation and Management Tool Ever Created for WordPress
3
+ * @version 1.2.3
4
  * @link
5
  * @copyright Steven Usher & Brad Vincent 2015
6
  * @license Released under the GPLv3 license.
7
  */
8
 
9
+ !function(a,b){b.$=a}(jQuery,window.FooGallery=window.FooGallery||{}),function(a){if(!a)return void console.warn("jQuery must be included in the page prior to the FooGallery.utils library.");var b={$:a,version:"0.0.8"};b.versionCompare=function(a,b){function c(a){for(var b=a.split("."),c=0,d=b.length;c<d;c++)b[c]=parseInt(b[c]),isNaN(b[c])&&(b[c]=0);return b}if(!/[\d.]/.test(a)||!/[\d.]/.test(b))return NaN;for(var d=c(a),e=c(b);d.length<e.length;)d.push(0);for(;e.length<d.length;)e.push(0);for(var f=0;f<d.length;++f){if(e.length==f)return 1;if(d[f]!=e[f])return d[f]>e[f]?1:-1}return d.length!=e.length?-1:0},!function(){try{return!!window.FooGallery.utils}catch(a){return!1}}()?window.FooGallery.utils=b:b.versionCompare(b.version,window.FooGallery.utils.version)>0?(console.warn("An older version of FooGallery.utils ("+window.FooGallery.utils.version+") already exists in the page, version "+b.version+" will override it."),window.FooGallery.utils=b):console.warn("A newer version of FooGallery.utils ("+window.FooGallery.utils.version+") already exists in the page, version "+b.version+" will not register itself.")}(jQuery),function(a,b){"0.0.8"===b.version&&(b.is={},b.is.array=function(a){return"[object Array]"===Object.prototype.toString.call(a)},b.is.boolean=function(a){return"[object Boolean]"===Object.prototype.toString.call(a)},b.is.element=function(a){return"object"==typeof HTMLElement?a instanceof HTMLElement:!!a&&"object"==typeof a&&null!==a&&1===a.nodeType&&"string"==typeof a.nodeName},b.is.empty=function(a){if(b.is.undef(a)||null===a)return!0;if(b.is.number(a)&&0==a)return!0;if(b.is.boolean(a)&&!1===a)return!0;if(b.is.string(a)&&0===a.length)return!0;if(b.is.array(a)&&0===a.length)return!0;if(b.is.jq(a)&&0===a.length)return!0;if(b.is.hash(a)){for(var c in a)if(a.hasOwnProperty(c))return!1;return!0}return!1},b.is.error=function(a){return"[object Error]"===Object.prototype.toString.call(a)},b.is.fn=function(a){return a===window.alert||"[object Function]"===Object.prototype.toString.call(a)},b.is.hash=function(a){return b.is.object(a)&&a.constructor===Object&&!a.nodeType&&!a.setInterval},b.is.jq=function(c){return!b.is.undef(a)&&c instanceof a},b.is.number=function(a){return"[object Number]"===Object.prototype.toString.call(a)&&!isNaN(a)},b.is.object=function(a){return"[object Object]"===Object.prototype.toString.call(a)&&!b.is.undef(a)&&null!==a},b.is.promise=function(a){return b.is.object(a)&&b.is.fn(a.then)&&b.is.fn(a.promise)},b.is.size=function(a){return!!(b.is.string(a)&&!b.is.empty(a)||b.is.number(a))&&/^(auto|none|(?:[\d\.]*)+?(?:%|px|mm|q|cm|in|pt|pc|em|ex|ch|rem|vh|vw|vmin|vmax)?)$/.test(a)},b.is.string=function(a){return"[object String]"===Object.prototype.toString.call(a)},b.is.undef=function(a){return void 0===a})}(FooGallery.utils.$,FooGallery.utils),function(a,b,c){if("0.0.8"===b.version){b.fn={};var d=Function.prototype.toString;b.fn.CONTAINS_SUPER=/xyz/.test(d.call(function(){xyz}))?/\b_super\b/:/.*/,b.fn.addOrOverride=function(a,e,f){if(c.object(a)&&c.string(e)&&!c.empty(e)&&c.fn(f)){var g=a[e],h=c.fn(g)&&b.fn.CONTAINS_SUPER.test(d.call(f));a[e]=h?function(a,b){return function(){var c=this._super;this._super=a;var d=b.apply(this,arguments);return this._super=c,d}}(g,f):f}},b.fn.apply=function(a,b){function d(){return a.apply(this,b)}return b=c.array(b)?b:[],d.prototype=a.prototype,new d},b.fn.arg2arr=function(a){return Array.prototype.slice.call(a)},b.fn.check=function(d,e,f,g){function h(a){return function(){return a.apply(d,arguments)}}return f=c.fn(f)?f:a.noop,d=c.object(d)?d:window,e=c.string(e)?b.fn.fetch(e,g):e,h(c.fn(e)?e:f)},b.fn.fetch=function(b,d){return!c.string(b)||c.empty(b)?null:(d=c.object(d)?d:window,a.each(b.split("."),function(a,b){if(!d[b])return!1;d=d[b]}),c.fn(d)?d:null)},b.fn.enqueue=function(d,e,f,g){function h(a,b){try{return n.push(a),b.apply(a,i)}catch(a){return j.reject(a,n),j}}var i=b.fn.arg2arr(arguments),j=a.Deferred(),k=a.Deferred(),l=k.promise(),m=[],n=[],o=!0;return d=i.shift(),e=i.shift(),a.each(d,function(a,d){c.fn(d[e])&&(l=l.then(function(){if(!o){var a=b.fn.arg2arr(arguments);m.push(a)}return o=!1,h(d,d[e])}))}),l.then(function(){if(!o){var a=b.fn.arg2arr(arguments);m.push(a)}o=!1,j.resolve(m)}),l.fail(function(){var a=b.fn.arg2arr(arguments);a.push(n),j.reject.apply(j,a)}),k.resolve(),j.promise()},b.fn.when=function(b){if(!c.array(b)||c.empty(b))return a.when();for(var d=a.Deferred(),e=[],f=b.length,g=0;g<b.length;g++)b[g].then(function(a){e.push(a)}).always(function(){--f||d.resolve(e)});return d.promise()},b.fn.rejectWith=function(c,d){var e=a.Deferred(),f=b.fn.arg2arr(arguments);return e.reject.apply(e,f).promise()},b.fn.resolveWith=function(c,d){var e=a.Deferred(),f=b.fn.arg2arr(arguments);return e.resolve.apply(e,f).promise()},b.fn.resolved=a.Deferred().resolve().promise(),b.fn.rejected=a.Deferred().reject().promise()}}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(a,b){if("0.0.8"===a.version){a.url={};var c=document.createElement("a");a.url.parts=function(a){return c.href=a,{hash:c.hash,host:c.host,hostname:c.hostname,href:c.href,origin:c.origin,pathname:c.pathname,port:c.port,protocol:c.protocol,search:c.search}},a.url.full=function(a){return!b.string(a)||b.empty(a)?null:(c.href=a,c.href)},a.url.param=function(a,c,d){if(!b.string(a)||!b.string(c)||b.empty(c))return a;var e,f,g,h;return b.undef(d)?(e=new RegExp("[?|&]"+c+"=([^&;]+?)(&|#|;|$)"),f=e.exec(a)||[,""],g=f[1].replace(/\+/g,"%20"),b.string(g)&&!b.empty(g)?decodeURIComponent(g):null):(""===d||null===d?(e=new RegExp("^([^#]*?)(([^#]*)&)?"+c+"(=[^&#]*)?(&|#|$)"),g=a.replace(e,"$1$3$5").replace(/^([^#]*)((\?)&|\?(#|$))/,"$1$3$4")):(e=new RegExp("([?&])"+c+"[^&]*"),h=c+"="+encodeURIComponent(d),(g=a.replace(e,"$1"+h))!==a||e.test(g)||(g+=(-1!==g.indexOf("?")?"&":"?")+h)),g)}}}(FooGallery.utils,FooGallery.utils.is),function(a,b,c){"0.0.8"===a.version&&(a.str={},a.str.camel=function(a){return b.empty(a)?a:a.toUpperCase()===a?a.toLowerCase():a.replace(/^([A-Z])|[-\s_]+(\w)/g,function(a,c,d){return b.string(d)?d.toUpperCase():c.toLowerCase()})},a.str.contains=function(a,c,d){return!(!b.string(a)||b.empty(a)||!b.string(c)||b.empty(c))&&(c.length<=a.length&&-1!==(d?a.toUpperCase().indexOf(c.toUpperCase()):a.indexOf(c)))},a.str.containsWord=function(a,c,d){if(!b.string(a)||b.empty(a)||!b.string(c)||b.empty(c)||a.length<c.length)return!1;for(var e=a.split(/\W/),f=0,g=e.length;f<g;f++)if(d?e[f].toUpperCase()==c.toUpperCase():e[f]==c)return!0;return!1},a.str.endsWith=function(a,c){return!b.string(a)||b.empty(a)||!b.string(c)||b.empty(c)?a==c:a.slice(a.length-c.length)==c},a.str.escapeRegExp=function(a){return b.empty(a)?a:a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},a.str.fnv1a=function(a){if(!b.string(a)||b.empty(a))return null;var c,d,e=2166136261;for(c=0,d=a.length;c<d;c++)e^=a.charCodeAt(c),e+=(e<<1)+(e<<4)+(e<<7)+(e<<8)+(e<<24);return e>>>0},a.str.from=function(c,d){return!b.string(c)||b.empty(c)||!b.string(d)||b.empty(d)?null:a.str.contains(c,d)?c.substring(c.indexOf(d)+d.length):null},a.str.join=function(d,e,f){if(!b.string(d)||!b.string(e))return null;var g=c.arg2arr(arguments);d=g.shift();var h,i,j=g.shift();for(h=0,i=g.length;h<i;h++)e=g[h],b.empty(e)||(a.str.endsWith(j,d)&&(j=j.slice(0,j.length-d.length)),a.str.startsWith(e,d)&&(e=e.slice(d.length)),j+=d+e);return j},a.str.startsWith=function(a,c){return!b.empty(a)&&!b.empty(c)&&a.slice(0,c.length)==c},a.str.until=function(c,d){return b.empty(c)||b.empty(d)?c:a.str.contains(c,d)?c.substring(0,c.indexOf(d)):c},a.str.format=function(a,d,e){var f=c.arg2arr(arguments);if(a=f.shift(),b.empty(a)||b.empty(f))return a;1===f.length&&(b.array(f[0])||b.object(f[0]))&&(f=f[0]);for(var g in f)a=a.replace(new RegExp("\\{"+g+"\\}","gi"),f[g]);return a})}(FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn),function(a,b,c,d,e){if("0.0.8"===b.version){b.obj={};var f=function(){};b.obj.create=function(a){if(!c.object(a))throw TypeError("Argument must be an object");f.prototype=a;var b=new f;return f.prototype=null,b},b.obj.extend=function(e,f,g){e=c.object(e)?e:{};var h=d.arg2arr(arguments);return h.shift(),a.each(h,function(a,c){b.obj.merge(e,c)}),e},b.obj.merge=function(a,d){a=c.hash(a)?a:{},d=c.hash(d)?d:{};for(var e in d)d.hasOwnProperty(e)&&(c.hash(d[e])?(a[e]=c.hash(a[e])?a[e]:{},b.obj.merge(a[e],d[e])):c.array(d[e])?a[e]=d[e].slice():a[e]=d[e]);return a},b.obj.mergeValid=function(d,e,f,g){if(!c.hash(f)||!c.hash(e))return d;e=c.hash(e)?e:{},g=c.hash(g)?g:{};var h,i,j;for(h in e)e.hasOwnProperty(h)&&c.fn(e[h])&&(i=c.array(g[h])?g[h]:c.string(g[h])?[g[h]]:[h],a.each(i,function(a,g){if(j=b.obj.prop(f,g),!c.undef(j))return e[h](j)?(b.obj.prop(d,h,j),!1):void 0}));return d},b.obj.prop=function(b,d,f){if(c.object(b)&&!c.empty(d)){var g,h;if(c.undef(f))return e.contains(d,".")?(g=d.split("."),h=g.length-1,a.each(g,function(a,d){if(a===h)f=b[d];else{if(!c.hash(b[d]))return!1;b=b[d]}})):c.undef(b[d])||(f=b[d]),f;e.contains(d,".")?(g=d.split("."),h=g.length-1,a.each(g,function(a,d){a===h?b[d]=f:b=c.hash(b[d])?b[d]:b[d]={}})):c.undef(b[d])||(b[d]=f)}}}}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.str),function(a,b,c){if("0.0.8"===b.version){b.ready=function(a){function c(){try{a.call(window,b.$)}catch(a){console.error(a)}}(Function("/*@cc_on return true@*/")()?"complete"===document.readyState:"loading"!==document.readyState)?c():document.addEventListener("DOMContentLoaded",c,!1)};var d=0;b.uniqueId=function(a,b){var e=a.attr("id");return c.empty(e)&&(b=c.string(b)&&!c.empty(b)?b:"uid-",e=b+ ++d,a.attr("id",e).data("__uniqueId__",!0)),e},b.removeUniqueId=function(a){a.data("__uniqueId__")&&a.removeAttr("id").removeData("__uniqueId__")}}}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(a,b,c){if("0.0.8"===b.version){b.transition={};var d=document.createElement("div");b.transition.supported=function(a){var b=a.style;return c.string(b.transition)||c.string(b.WebkitTransition)||c.string(b.MozTransition)||c.string(b.msTransition)||c.string(b.OTransition)}(d),b.transition.end=function(a){var b=a.style;return c.string(b.transition)?"transitionend":c.string(b.WebkitTransition)?"webkitTransitionEnd":c.string(b.MozTransition)?"transitionend":c.string(b.msTransition)?"msTransitionEnd":c.string(b.OTransition)?"oTransitionEnd":null}(d),b.transition.duration=function(a,b){if(b=c.number(b)?b:0,!c.jq(a))return b;var d=a.css("transition-duration");if(/^([\d\.]*)+?(ms|s)$/i.test(d)){var e=d.match(/^([\d\.]*)+?(ms|s)$/i),f=parseFloat(e[1]);return"s"===e[2].toLowerCase()&&(f*=1e3),f}return b},b.transition.start=function(d,e,f,g){var h=a.Deferred();if(d=d.first(),b.transition.supported){var i=d.data("transition_safety");c.hash(i)&&c.number(i.timer)&&(clearTimeout(i.timer),d.removeData("transition_safety").off(b.transition.end+".utils"),i.deferred.reject()),g=c.number(g)?g:b.transition.duration(d)+50,i={deferred:h,timer:setTimeout(function(){d.removeData("transition_safety").off(b.transition.end+".utils"),h.resolve()},g)},d.data("transition_safety",i),d.on(b.transition.end+".utils",function(a){d.is(a.target)&&(clearTimeout(i.timer),d.removeData("transition_safety").off(b.transition.end+".utils"),h.resolve())})}return setTimeout(function(){c.fn(e)?e.apply(d.get(0),[d]):d.toggleClass(e,f),b.transition.supported||h.resolve()},20),h.promise()}}}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(a,b,c,d,e){"0.0.8"===b.version&&(b.Class=function(){},b.Class.extend=function(a){function f(){if(!c.fn(this.construct))throw new SyntaxError('FooGallery.utils.Class objects must be constructed with the "new" keyword.');this.construct.apply(this,arguments)}a=c.hash(a)?a:{};var g=d.create(this.prototype);for(var h in a)a.hasOwnProperty(h)&&e.addOrOverride(g,h,a[h]);return g.construct=c.fn(g.construct)?g.construct:function(){},f.prototype=g,f.prototype.constructor=c.fn(g.__ctor__)?g.__ctor__:f,f.extend=b.Class.extend,f.override=b.Class.override,f},b.Class.override=function(a,b){e.addOrOverride(this.prototype,a,b)})}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj,FooGallery.utils.fn),function(a,b,c){if("0.0.8"===b.version){b.Bounds=b.Class.extend({construct:function(){var a=this;a.top=0,a.right=0,a.bottom=0,a.left=0,a.width=0,a.height=0},inflate:function(a){var b=this;return c.number(a)&&(b.top-=a,b.right+=a,b.bottom+=a,b.left-=a,b.width+=2*a,b.height+=2*a),b},intersects:function(a){var b=this;return b.left<=a.right&&a.left<=b.right&&b.top<=a.bottom&&a.top<=b.bottom}});var d;b.getViewportBounds=function(c){d||(d=a(window));var e=new b.Bounds;return e.top=d.scrollTop(),e.left=d.scrollLeft(),e.width=d.width(),e.height=d.height(),e.right=e.left+e.width,e.bottom=e.top+e.height,e.inflate(c),e},b.getElementBounds=function(d){c.jq(d)||(d=a(d));var e=new b.Bounds;if(0!==d.length){var f=d.offset();e.top=f.top,e.left=f.left,e.width=d.width(),e.height=d.height()}return e.right=e.left+e.width,e.bottom=e.top+e.height,e}}}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(a,b,c,d){"0.0.8"===b.version&&(b.Factory=b.Class.extend({construct:function(){this.registered={}},contains:function(a){return!c.undef(this.registered[a])},load:function(b,e,f){var g,h,i=this,j=d.arg2arr(arguments),k=[],l=[];b=j.shift()||{};for(g in i.registered)if(i.registered.hasOwnProperty(g)){var m=i.registered[g];b.hasOwnProperty(g)&&(h=b[g],c.string(h)&&(h=d.fetch(b[g])),c.fn(h)&&(m={name:g,klass:h,priority:i.registered[g].priority})),k.push(m)}for(g in b)b.hasOwnProperty(g)&&!i.registered.hasOwnProperty(g)&&(h=b[g],c.string(h)&&(h=d.fetch(b[g])),c.fn(h)&&k.push({name:g,klass:h,priority:0}));return k.sort(function(a,b){return b.priority-a.priority}),a.each(k,function(a,b){c.fn(b.klass)&&l.push(d.apply(b.klass,j))}),l},make:function(a,b,e){var f,g=this,h=d.arg2arr(arguments);return a=h.shift(),f=g.registered[a],c.hash(f)&&c.fn(f.klass)?d.apply(f.klass,h):null},names:function(b){b=!!c.boolean(b)&&b;var d,e=[];if(b){var f=[];for(d in this.registered)this.registered.hasOwnProperty(d)&&f.push(this.registered[d]);f.sort(function(a,b){return b.priority-a.priority}),a.each(f,function(a,b){e.push(b.name)})}else for(d in this.registered)this.registered.hasOwnProperty(d)&&e.push(d);return e},register:function(a,b,d){if(!c.string(a)||c.empty(a)||!c.fn(b))return!1;d=c.number(d)?d:0;var e=this.registered[a];return this.registered[a]={name:a,klass:b,priority:c.undef(e)?d:e.priority},!0}}))}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn),function(a,b,c){if("0.0.8"===a.version){var d=!1;try{d=!!window.localStorage}catch(a){d=!1}a.Debugger=a.Class.extend({construct:function(a){this.key=a,this.enabled=!!d&&!!localStorage.getItem(this.key)},enable:function(){d&&(this.enabled=!0,localStorage.setItem(this.key,this.enabled))},disable:function(){d&&(this.enabled=!1,localStorage.removeItem(this.key))},log:function(a,c){this.enabled&&console.log.apply(console,b.arg2arr(arguments))},logf:function(a,d,e){if(this.enabled){var f=b.arg2arr(arguments);a=f.shift(),d=f.shift(),f.unshift(c.format(a,d)),this.log.apply(this,f)}}})}}(FooGallery.utils,FooGallery.utils.fn,FooGallery.utils.str),function(a,b,c){"0.0.8"===b.version&&(b.Throttle=b.Class.extend({construct:function(a){this.id=null,this.active=!1,this.idle=c.number(a)?a:0},limit:function(a){if(c.fn(a)){this.clear();var b=this;this.active=!0,this.id=setTimeout(function(){b.active=!1,b.id=null,a()},this.idle)}},clear:function(){c.number(this.id)&&(clearTimeout(this.id),this.active=!1,this.id=null)}}))}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(a,b,c,d,e){b.debug=new c.Debugger("__FooGallery__"),c.selectify=function(b){if(d.empty(b))return null;if(d.hash(b)){var e,f={};for(var g in b)b.hasOwnProperty(g)&&(e=c.selectify(b[g]))&&(f[g]=e);return f}return d.string(b)||d.array(b)?(d.string(b)&&(b=[b]),a.map(b,function(a){return d.string(a)?"."+a.split(/\s/g).join("."):null}).join(",")):null},b.emptyImage="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",b.dataTemplate="__FooGallery__",b.dataItem="__FooGalleryItem__",b.init=function(a,c){return b.template.make(a,c).initialize()},b.initAll=function(c){return e.when(a(".foogallery").map(function(a,d){return b.init(c,d)}).get())},b.parseSrc=function(b,c,e,f,g,h){if(!d.string(b))return null;if(!d.string(f))return b;var i=a.map(f.replace(/(\s[\d.]+[whx]),/g,"$1 @,@ ").split(" @,@ "),function(a){return{url:/^\s*(\S*)/.exec(a)[1],w:parseFloat((/\S\s+(\d+)w/.exec(a)||[0,1/0])[1]),h:parseFloat((/\S\s+(\d+)h/.exec(a)||[0,1/0])[1]),x:parseFloat((/\S\s+([\d.]+)x/.exec(a)||[0,1])[1])}});if(!i.length)return b;i.unshift({url:b,w:i[0].w!==1/0&&i[0].h===1/0?c:1/0,h:i[0].h!==1/0&&i[0].w===1/0?e:1/0,x:1});var j,k=window.devicePixelRatio||1,l={w:g*k,h:h*k,x:k};for(j in l)l.hasOwnProperty(j)&&(i=a.grep(i,function(a,b){return function(c){return c[a]>=l[a]||c[a]===b}}(j,Math.max.apply(null,a.map(i,function(a){return a[j]})))));for(j in l)l.hasOwnProperty(j)&&(i=a.grep(i,function(a,b){return function(c){return c[a]===b}}(j,Math.min.apply(null,a.map(i,function(a){return a[j]})))));return i[0].url},a.fn.foogallery=function(c,e){return this.each(function(f,g){if(d.string(c)){var h=a.data(g,b.dataTemplate);if(h instanceof b.Template)switch(c){case"layout":return void h.layout();case"destroy":return void h.destroy()}}else b.template.make(c,g).initialize().then(function(a){d.fn(e)&&e(a)})})},b.isCached=function(a){var b=new Image;b.src=a;var c=b.complete;return b.src="",b=null,c}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn),function(a,b,c,d,e){var f="__FooGallerySwipe__",g="ontouchstart"in window,h=window.navigator.msPointerEnabled&&!window.navigator.pointerEnabled&&!g,i=(window.navigator.pointerEnabled||window.navigator.msPointerEnabled)&&!g,j=g||i,k=!1;try{var l=Object.defineProperty({},"passive",{get:function(){k=!0}});window.addEventListener("testPassive",null,l),window.removeEventListener("testPassive",null,l)}catch(a){}b.Swipe=c.Class.extend({construct:function(b,c){var d=this,f=".fgswipe";d.$el=a(b),d.opt=e.extend({threshold:20,allowPageScroll:!1,swipe:a.noop,data:{}},c),d.active=!1,d.startPoint=null,d.endPoint=null,d.events={start:(j?i?h?"MSPointerDown":"pointerdown":"touchstart":"mousedown")+f,move:(j?i?h?"MSPointerMove":"pointermove":"touchmove":"mousemove")+f,end:(j?i?h?"MSPointerUp":"pointerup":"touchend":"mouseup")+f,leave:(j?i?"mouseleave":null:"mouseleave")+f}},init:function(){var a=this,b=a.$el.get(0);k&&"touchstart"==a.events.start&&b.addEventListener?b.addEventListener("touchstart",a.onStart,{passive:!0}):a.$el.on(a.events.start,{self:a},a.onStart),a.$el.on(a.events.move,{self:a},a.onMove),k&&"touchend"==a.events.end&&b.addEventListener?b.addEventListener("touchend",a.onEnd,{passive:!0}):a.$el.on(a.events.end,{self:a},a.onEnd),d.string(a.events.leave)&&a.$el.on(a.events.leave,{self:a},a.onEnd),a.$el.data(f,a)},destroy:function(){var a=this,b=a.$el.get(0);k&&"touchstart"==a.events.start&&b.removeEventListener?b.removeEventListener("touchstart",a.onStart,{passive:!0}):a.$el.off(a.events.start,a.onStart),a.$el.off(a.events.move,a.onMove),k&&"touchend"==a.events.end&&b.removeEventListener?b.removeEventListener("touchend",a.onEnd,{passive:!0}):a.$el.off(a.events.end,a.onEnd),d.string(a.events.leave)&&a.$el.off(a.events.leave,a.onEnd),a.$el.removeData(f)},getAngle:function(a,b){var c=Math.atan2(a.x-b.x,a.y-b.y),d=Math.round(180*c/Math.PI);return 360-(d<0?360-Math.abs(d):d)},getDistance:function(a,b){var c=b.x-a.x,d=b.y-a.y;return c*=c,d*=d,Math.sqrt(c+d)},getDirection:function(a,b){var c=this,d=c.getAngle(a,b);return d>337.5||d<=22.5?"N":d>22.5&&d<=67.5?"NE":d>67.5&&d<=112.5?"E":d>112.5&&d<=157.5?"SE":d>157.5&&d<=202.5?"S":d>202.5&&d<=247.5?"SW":d>247.5&&d<=292.5?"W":d>292.5&&d<=337.5?"NW":"NONE"},getPoint:function(a){var b;return j&&!d.empty(b=a.originalEvent.touches||a.touches)?{x:b[0].pageX,y:b[0].pageY}:d.number(a.pageX)&&d.number(a.pageY)?{x:a.pageX,y:a.pageY}:null},getOffset:function(a){var b=this,c=b.$el.offset();return{left:a.x-c.left,top:a.y-c.top}},onStart:function(a){var b=a.data.self,c=b.getPoint(a);d.empty(c)||(b.active=!0,b.startPoint=b.endPoint=c)},onMove:function(b){var c=b.data.self,e=c.getPoint(b);if(c.active&&!d.empty(e))if(c.endPoint=e,c.opt.allowPageScroll){if(d.hash(c.opt.allowPageScroll)){var f=c.getDirection(c.startPoint,c.endPoint);c.opt.allowPageScroll.x||-1===a.inArray(f,["NE","E","SE","NW","W","SW"])||b.preventDefault(),c.opt.allowPageScroll.y||-1===a.inArray(f,["NW","N","NE","SW","S","SE"])||b.preventDefault()}}else b.preventDefault()},onEnd:function(a){var b=a.data.self;if(b.active){b.active=!1;var c={startPoint:b.startPoint,endPoint:b.endPoint,startOffset:b.getOffset(b.startPoint),endOffset:b.getOffset(b.endPoint),angle:b.getAngle(b.startPoint,b.endPoint),distance:b.getDistance(b.startPoint,b.endPoint),direction:b.getDirection(b.startPoint,b.endPoint)};if(b.opt.threshold>0&&c.distance<b.opt.threshold)return;b.opt.swipe.apply(this,[c,b.opt.data]),b.startPoint=null,b.endPoint=null}}}),a.fn.fgswipe=function(c){return this.each(function(){var e=a(this),g=e.data(f);if(g instanceof b.Swipe){if(d.string(c)&&d.fn(g[c]))return void g[c]();g.destroy()}d.hash(c)&&(g=new b.Swipe(this,c),g.init())})}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj),function(a,b,c,d,e,f){b.TemplateFactory=c.Factory.extend({construct:function(){this.registered={}},register:function(a,b,c,e,f,g){var h=this,i=h._super(a,b,g);if(i){var j=h.registered;j[a].opt=d.hash(c)?c:{},j[a].cls=d.hash(e)?e:{},j[a].il8n=d.hash(f)?f:{}}return i},make:function(b,c){c=d.jq(c)?c:a(c),b=f.extend({},b,c.data("foogallery"));var e=this,g=e.type(b,c);return e.contains(g)?(b=e.options(g,b),e._super(g,b,c)):null},type:function(b,e){e=d.jq(e)?e:a(e);var f=this,g=d.hash(b)&&d.hash(b)&&d.string(b.type)&&f.contains(b.type)?b.type:"core";if("core"===g&&e.length>0)for(var h=f.registered,i=f.names(!0),j=0,k=i.length;j<k;j++)if(h.hasOwnProperty(i[j])){var l=i[j],m=h[l].cls;if(d.string(m.container)){var n=c.selectify(m.container);if(e.is(n)){g=i[j];break}}}return g},configure:function(a,b,c,d){var e=this;if(e.contains(a)){var g=e.registered;f.extend(g[a].opt,b),f.extend(g[a].cls,c),f.extend(g[a].il8n,d)}},options:function(a,c){c=f.extend({type:a},c);var e=this,g=e.registered,h=g.core.opt,i=g.core.cls,j=g.core.il8n;return d.hash(c.cls)||(c.cls={}),d.hash(c.il8n)||(c.il8n={}),d.undef(b.filtering)||(c=b.filtering.merge(c)),d.undef(b.paging)||(c=b.paging.merge(c)),"core"!==a&&e.contains(a)?(c=f.extend({},h,g[a].opt,c),c.cls=f.extend({},i,g[a].cls,c.cls),c.il8n=f.extend({},j,g[a].il8n,c.il8n)):(c=f.extend({},h,c),c.cls=f.extend({},i,c.cls),c.il8n=f.extend({},j,c.il8n)),c}}),b.template=new b.TemplateFactory}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(a,b,c,d,e){a.PagingFactory=b.Factory.extend({construct:function(){this.registered={}},register:function(a,b,d,e,f,g,h){var i=this,j=i._super(a,b,h);if(j){var k=i.registered;k[a].ctrl=c.fn(d)?d:null,k[a].opt=c.hash(e)?e:{},k[a].cls=c.hash(f)?f:{},k[a].il8n=c.hash(g)?g:{}}return j},type:function(a){var b,d=this;return c.hash(a)&&c.hash(b=a.paging)&&c.string(b.type)&&d.contains(b.type)?b.type:null},merge:function(a){a=e.extend({},a);var b=this,d=b.type(a),f=b.registered,g=f.default.opt,h=f.default.cls,i=f.default.il8n,j=c.hash(a.paging)?a.paging:{},k=c.hash(a.cls)&&c.hash(a.cls.paging)?e.extend({},a.cls.paging):{},l=c.hash(a.il8n)&&c.hash(a.il8n.paging)?e.extend({},a.il8n.paging):{};return c.hash(a.cls)||(a.cls={}),c.hash(a.il8n)||(a.il8n={}),"default"!==d&&b.contains(d)?(a.paging=e.extend({},g,f[d].opt,j,{type:d}),a.cls=e.extend(a.cls,{paging:h},{paging:f[d].cls},{paging:k}),a.il8n=e.extend(a.il8n,{paging:i},{paging:f[d].il8n},{paging:l})):(a.paging=e.extend({},g,j,{type:d}),a.cls=e.extend(a.cls,{paging:h},{paging:k}),a.il8n=e.extend(a.il8n,{paging:i},{paging:l})),a},configure:function(a,b,c,d){var f=this;if(f.contains(a)){var g=f.registered;e.extend(g[a].opt,b),e.extend(g[a].cls,c),e.extend(g[a].il8n,d)}},hasCtrl:function(a){var b=this,d=b.registered[a];return c.hash(d)&&c.fn(d.ctrl)},makeCtrl:function(a,b,d,e){var f=this,g=f.registered[a];return c.hash(g)&&c.fn(g.ctrl)?new g.ctrl(b,d,e):null}}),a.paging=new a.PagingFactory}(FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(a,b,c,d,e,f){var g=0;b.Template=c.Class.extend({construct:function(e,f){var h=this;h.namespace=".foogallery-"+ ++g,h.$el=d.jq(f)?f:a(f),h.opt=e,h.template=e.template,h.id=h.$el.prop("id")||e.id,h.cls=e.cls,h.il8n=e.il8n,h.sel=c.selectify(h.cls),h.items=b.components.make("items",h),h.pages=d.undef(b.paging)?null:b.paging.make(e.paging.type,h),h.filter=d.undef(b.filtering)?null:b.filtering.make(e.filtering.type,h),h.state=b.components.make("state",h),h._initialize=null,h.initializing=!1,h.initialized=!1,h.destroying=!1,h.destroyed=!1,h._undo={classes:"",style:"",create:!1,children:!1}},initialize:function(f){var g=this;return d.promise(g._initialize)?g._initialize:(f=d.jq(f)?f:a(f),g._initialize=a.Deferred(function(h){if(g.initializing=!0,0===f.length&&0===g.$el.parent().length)return void h.reject("A parent element is required.");0===g.$el.length&&(g.$el=g.create(),g._undo.create=!0),f.length>0&&g.$el.appendTo(f);var i,j=a.Deferred(),k=j.promise();g.$el.length>0&&(i=g.$el.data(b.dataTemplate))instanceof b.Template?k=k.then(function(){return i.destroy().then(function(){g.$el.data(b.dataTemplate,g)})}):g.$el.data(b.dataTemplate,g),k.then(function(){if(g.destroying)return e.rejectWith("destroy in progress");d.empty(g.opt.on)||g.$el.on(g.opt.on),g._undo.classes=g.$el.attr("class"),g._undo.style=g.$el.attr("style"),g.$el.is(g.sel.container)||g.$el.addClass(g.cls.container);var a=c.selectify(g.opt.classes);return null==a||g.$el.is(a)||g.$el.addClass(g.opt.classes),0==g.$el.children().not(g.sel.item.elem).length&&(g.$el.append(g.createChildren()),g._undo.children=!0),g.raise("pre-init").isDefaultPrevented()?e.rejectWith("pre-init default prevented"):void 0}).then(function(){return g.destroying?e.rejectWith("destroy in progress"):g.opt.delay<=0?e.resolved:a.Deferred(function(a){g._delay=setTimeout(function(){g._delay=null,a.resolve()},g.opt.delay)}).promise()}).then(function(){return g.destroying?e.rejectWith("destroy in progress"):g.raise("init").isDefaultPrevented()?e.rejectWith("init default prevented"):g.items.fetch()}).then(function(){if(g.destroying)return e.rejectWith("destroy in progress");if(g.raise("post-init").isDefaultPrevented())return e.rejectWith("post-init default prevented");var b=g.state.parse();g.state.set(d.empty(b)?g.state.initial():b),a(window).on("scroll"+g.namespace,{self:g},g.throttle(g.onWindowScroll,g.opt.throttle)).on("popstate"+g.namespace,{self:g},g.onWindowPopState)}).then(function(){return g.destroying?e.rejectWith("destroy in progress"):(g.raise("first-load"),g.loadAvailable())}).then(function(){if(g.destroying)return e.rejectWith("destroy in progress");g.initializing=!1,g.initialized=!0,g._check(1e3),g.raise("ready"),h.resolve(g)}).fail(function(a){h.reject(a)}),j.resolve()}).promise().fail(function(a){console.log("initialize failed",g,a),g.destroy()}))},create:function(){var b=this;return a("<div/>",{id:b.id,class:b.cls.container}).addClass(b.opt.classes)},createChildren:function(){return a()},destroy:function(){var b=this;return b.destroyed?e.resolved:(b.destroying=!0,a.Deferred(function(a){b.initializing&&d.promise(b._initialize)?b._initialize.always(function(){b.destroying=!1,b._destroy(),a.resolve()}):(b.destroying=!1,b._destroy(),a.resolve())}).promise())},_destroy:function(){var c=this;c.destroyed||(c.raise("destroy"),a(window).off(c.namespace),c.state.destroy(),c.filter&&c.filter.destroy(),c.pages&&c.pages.destroy(),c.items.destroy(),d.empty(c.opt.on)||c.$el.off(c.opt.on),c.raise("destroyed"),c.$el.removeData(b.dataTemplate),d.empty(c._undo.classes)?c.$el.removeAttr("class"):c.$el.attr("class",c._undo.classes),d.empty(c._undo.style)?c.$el.removeAttr("style"):c.$el.attr("style",c._undo.style),c._undo.children&&c.destroyChildren(),c._undo.create&&c.$el.remove(),c.$el=c.state=c.items=c.pages=null,c.destroyed=!0,c.initializing=!1,c.initialized=!1)},destroyChildren:function(){},getAvailable:function(){return this.pages?this.pages.available():this.items.available()},loadAvailable:function(){return this.items.load(this.getAvailable())},getItems:function(){return this.pages?this.pages.items():this.items.available()},_check:function(a){a=d.number(a)?a:0;var b=this;setTimeout(function(){!b.initialized||b.destroying&&b.destroyed||b.loadAvailable()},a)},raise:function(c,e){if(!d.string(c)||d.empty(c))return null;e=d.array(e)?e:[];var g=this,h=c.split(".")[0],i=f.camel("on-"+h),j=a.Event(h+".foogallery");return e.unshift(g),g.$el.trigger(j,e),b.debug.logf("{id}|{name}:",{id:g.id,name:h},e),d.fn(g[i])&&(e.unshift(j),g[i].apply(g.$el.get(0),e)),j},layout:function(){var a=this;null!==a._initialize&&a.raise("layout")},throttle:function(a,b){var c=Date.now();return function(){if(c+b-Date.now()<0){var d=e.arg2arr(arguments);a.apply(this,d),c=Date.now()}}},onWindowPopState:function(a){var b=a.data.self,c=a.originalEvent.state;d.empty(c)||c.id!==b.id||(b.state.set(c),b.loadAvailable())},onWindowScroll:function(a){a.data.self.loadAvailable()}}),b.template.register("core",b.Template,{id:null,type:"core",classes:"",on:{},lazy:!0,viewport:200,items:[],fixLayout:!0,delay:0,throttle:50,timeout:6e4,srcset:"data-srcset-fg",src:"data-src-fg",template:{}},{container:"foogallery"},{},-100)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.str),function(a,b){a.Component=b.Class.extend({construct:function(a){this.tmpl=a},destroy:function(){this.tmpl=null}}),a.components=new b.Factory}(FooGallery,FooGallery.utils),function(a,b,c,d){b.State=b.Component.extend({construct:function(a){var b=this;b._super(a),b.apiEnabled=!!window.history&&!!history.replaceState,b.opt=b.tmpl.opt.state,b.enabled=b.opt.enabled,b.pushOrReplace=b.isPushOrReplace(b.opt.pushOrReplace)?b.opt.pushOrReplace:"replace";var c=d.escapeRegExp(b.tmpl.id),e=d.escapeRegExp(b.opt.values),f=d.escapeRegExp(b.opt.pair);b.regex={exists:new RegExp("^#"+c+"\\"+e+".+?"),values:new RegExp("(\\w+)"+f+"([^"+e+"]+)","g")}},destroy:function(){var a=this;a.clear(),a.opt=a.regex={},a._super()},isPushOrReplace:function(b){return-1!==a.inArray(b,["push","replace"])},exists:function(){return this.regex.exists.test(location.hash)&&this.regex.values.test(location.hash)},parse:function(){var b=this,d={};if(b.exists())if(b.enabled){d.id=b.tmpl.id;var e=location.hash.match(b.regex.values);a.each(e,function(e,f){var g=f.split(b.opt.pair);2===g.length&&(d[g[0]]=-1===g[1].indexOf(b.opt.array)?decodeURIComponent(g[1].replace(/\+/g,"%20")):a.map(g[1].split(b.opt.array),function(a){return decodeURIComponent(a.replace(/\+/g,"%20"))}),c.string(d[g[0]])&&!isNaN(d[g[0]])&&(d[g[0]]=parseInt(d[g[0]])))})}else b.apiEnabled?history.replaceState(null,"",location.pathname+location.search):location.hash="#";return d},hashify:function(b){var d=this;if(c.hash(b)){var e=[];return a.each(b,function(b,f){c.empty(f)||"id"===b||(f=c.array(f)?a.map(f,function(a){return encodeURIComponent(a)}).join(d.opt.array):encodeURIComponent(f),e.push(b+d.opt.pair+f))}),e.length>0&&e.unshift("#"+d.tmpl.id),e.join(d.opt.values)}return""},replace:function(a){var b=this;if(b.enabled&&b.apiEnabled){a.id=b.tmpl.id;var d=b.hashify(a),e=c.empty(d);history.replaceState(e?null:a,"",e?location.pathname+location.search:d)}},push:function(a){var b=this;if(b.enabled&&b.apiEnabled){a.id=b.tmpl.id;var d=b.hashify(a),e=c.empty(d);history.pushState(e?null:a,"",e?location.pathname+location.search:d)}},update:function(a,b){var c=this;c.enabled&&c.apiEnabled&&(b=c.isPushOrReplace(b)?b:c.pushOrReplace,c[b](a))},clear:function(){
10
+ this.exists()&&this.replace({})},initial:function(){var a=this,b=a.tmpl,d={};return b.filter&&!c.empty(b.filter.current)&&(d.f=b.filter.current),b.pages&&b.pages.current>1&&(d.p=b.pages.current),d},get:function(a){var d=this,e=d.tmpl,f={};return a instanceof b.Item&&(f.i=a.id),e.filter&&!c.empty(e.filter.current)&&(f.f=e.filter.current),e.pages&&e.pages.isValid(e.pages.current)&&(f.p=e.pages.current),f},set:function(a){var b=this,d=b.tmpl;if(c.hash(a)){d.items.reset();var e=d.items.get(a.i);if(d.filter){d.filter.rebuild();var f=c.empty(a.f)?[]:a.f;d.filter.set(f,!1)}if(d.pages){d.pages.rebuild();var g=d.pages.number(a.p);e&&!d.pages.contains(g,e)&&(g=d.pages.find(e),g=0!==g?g:1),d.pages.set(g,!c.empty(a),!1,!0),e&&d.pages.contains(g,e)&&e.scrollTo()}else d.items.detach(d.items.all()),d.items.create(d.items.available(),!0),e&&e.scrollTo();c.empty(a.i)||(a.i=null,b.replace(a))}}}),b.template.configure("core",{state:{enabled:!1,pushOrReplace:"replace",values:"/",pair:":",array:"+"}}),b.components.register("state",b.State)}(FooGallery.$,FooGallery,FooGallery.utils.is,FooGallery.utils.str),function(a,b,c,d,e,f){b.Item=b.Component.extend({construct:function(a,b){var c=this;c._super(a),c.cls=a.cls.item,c.il8n=a.il8n.item,c.sel=a.sel.item,c.opt=f.extend({},a.opt.item,b),c.isAttached=!1,c.isCreated=!1,c.isDestroyed=!1,c.isLoading=!1,c.isLoaded=!1,c.isError=!1,c.isParsed=!1,c.$el=null,c.$inner=null,c.$anchor=null,c.$wrap=null,c.$image=null,c.$caption=null,c.fixLayout=c.tmpl.opt.fixLayout,c.type=c.opt.type,c.id=c.opt.id,c.href=c.opt.href,c.src=c.opt.src,c.srcset=c.opt.srcset,c.width=c.opt.width,c.height=c.opt.height,c.title=c.opt.title,c.alt=c.opt.alt,c.caption=d.empty(c.opt.caption)?c.title:c.opt.caption,c.description=d.empty(c.opt.description)?c.alt:c.opt.description,c.attr=c.opt.attr,c.tags=c.opt.tags,c.maxWidth=c.opt.maxWidth,c.maxCaptionLength=c.opt.maxCaptionLength,c.maxDescriptionLength=c.opt.maxDescriptionLength,c.showCaptionTitle=c.opt.showCaptionTitle,c.showCaptionDescription=c.opt.showCaptionDescription,c._thumbUrl=null,c._load=null,c._undo={classes:"",style:"",loader:!1,wrap:!1,placeholder:!1}},destroy:function(){var a=this;return a.tmpl.raise("destroy-item",[a]).isDefaultPrevented()||(a.isDestroyed=a.doDestroyItem()),a.isDestroyed&&(a.tmpl.raise("destroyed-item",[a]),a._super()),a.isDestroyed},doDestroyItem:function(){var a=this;return a.isParsed?(a.append(),d.empty(a._undo.classes)?a.$el.removeAttr("class"):a.$el.attr("class",a._undo.classes),d.empty(a._undo.style)?a.$el.removeAttr("style"):a.$el.attr("style",a._undo.style),a._undo.wrap&&a.$image.unwrap(),a._undo.loader&&a.$el.find(a.sel.loader).remove(),a._undo.placeholder&&a.$image.prop("src")==b.emptyImage&&a.$image.removeAttr("src")):a.isCreated&&(a.detach(),a.$el.remove()),!0},parse:function(b){var c=this,d=a(b);return!c.tmpl.raise("parse-item",[c,d]).isDefaultPrevented()&&(c.isCreated=d.is(c.sel.elem))&&(c.isParsed=c.doParseItem(d),c.fixLayout&&c.fix()),c.isParsed&&c.tmpl.raise("parsed-item",[c]),c.isParsed},doParseItem:function(c){var e=this,f=e.tmpl.opt,g=e.cls,h=e.sel;e._undo.classes=c.attr("class")||"",e._undo.style=c.attr("style")||"",e.$el=c.data(b.dataItem,e),e.$inner=e.$el.children(h.inner),e.$anchor=e.$inner.children(h.anchor).on("click.foogallery",{self:e},e.onAnchorClick),e.$image=e.$anchor.find(h.image),e.$caption=e.$inner.children(h.caption.elem).on("click.foogallery",{self:e},e.onCaptionClick),e.isAttached=e.$el.parent().length>0,e.isLoading=e.$el.is(h.loading),e.isLoaded=e.$el.is(h.loaded),e.isError=e.$el.is(h.error);var i=e.$anchor.data();if(e.id=i.id||e.id,e.tags=i.tags||e.tags,e.href=i.href||e.$anchor.attr("href")||e.href,e.src=e.$image.attr(f.src)||e.src,e.srcset=e.$image.attr(f.srcset)||e.srcset,e.width=parseInt(e.$image.attr("width"))||e.width,e.height=parseInt(e.$image.attr("height"))||e.height,e.title=e.$image.attr("title")||e.title,e.alt=e.$image.attr("alt")||e.alt,e.caption=i.title||i.captionTitle||e.caption||e.title,e.description=i.description||i.captionDesc||e.description||e.alt,d.empty(e.caption)&&(e.caption=a.trim(e.$caption.find(h.caption.title).html())),d.empty(e.description)&&(e.description=a.trim(e.$caption.find(h.caption.description).html())),d.number(e.maxCaptionLength)&&e.maxCaptionLength>0&&!d.empty(e.caption)&&d.string(e.caption)&&e.caption.length>e.maxCaptionLength&&e.$caption.find(h.caption.title).html(e.caption.substr(0,e.maxCaptionLength)+"&hellip;"),d.number(e.maxDescriptionLength)&&e.maxDescriptionLength>0&&!d.empty(e.description)&&d.string(e.description)&&e.description.length>e.maxDescriptionLength&&e.$caption.find(h.caption.description).html(e.description.substr(0,e.maxDescriptionLength)+"&hellip;"),0===e.$anchor.children(h.wrap).length){var j=a("<span/>",{class:g.wrap});e.$anchor.append(j.append(e.$image)),e._undo.wrap=!0}0===e.$el.children(h.loader).length&&(e.$el.append(a("<div/>",{class:g.loader})),e._undo.loader=!0);var k=e.$image.get(0);return d.empty(k.src)&&(k.src=b.emptyImage,e._undo.placeholder=!0),!e.isCreated||!e.isAttached||e.isLoading||e.isLoaded||e.isError||e.$el.addClass(g.idle),!0},create:function(){var a=this;if(!a.isCreated&&d.string(a.href)&&d.string(a.src)&&d.number(a.width)&&d.number(a.height)){a.tmpl.raise("create-item",[a]).isDefaultPrevented()||(a.isCreated=a.doCreateItem()),a.isCreated&&a.tmpl.raise("created-item",[a])}return a.isCreated},doCreateItem:function(){var c=this,e=c.tmpl.opt,f=c.cls,g=c.attr;g.elem.class=f.elem+" "+f.idle,g.inner.class=f.inner,g.anchor.class=f.anchor,g.anchor.href=c.href,g.anchor["data-id"]=c.id,g.anchor["data-title"]=c.caption,g.anchor["data-description"]=c.description,d.empty(c.tags)||(g.anchor["data-tags"]=JSON.stringify(c.tags)),g.image.class=f.image,g.image.src=b.emptyImage,g.image[e.src]=c.src,g.image[e.srcset]=c.srcset,g.image.width=c.width,g.image.height=c.height,g.image.title=c.title,g.image.alt=c.alt,c.$el=a("<div/>").attr(g.elem).data(b.dataItem,c),c.$inner=a("<figure/>").attr(g.inner).appendTo(c.$el),c.$anchor=a("<a/>").attr(g.anchor).appendTo(c.$inner).on("click.foogallery",{self:c},c.onAnchorClick);var h=a("<span/>",{class:f.wrap}).appendTo(c.$anchor);c.$image=a("<img/>").attr(g.image).appendTo(h),f=c.cls.caption,g=c.attr.caption,g.elem.class=f.elem,c.$caption=a("<figcaption/>").attr(g.elem).on("click.foogallery",{self:c},c.onCaptionClick),g.inner.class=f.inner;var i=a("<div/>").attr(g.inner).appendTo(c.$caption),j=c.showCaptionTitle&&!d.empty(c.caption),k=c.showCaptionDescription&&!d.empty(c.description);if(j||k){if(g.title.class=f.title,g.description.class=f.description,j){var l=a("<div/>").attr(g.title),m=c.caption;d.number(c.maxCaptionLength)&&c.maxCaptionLength>0&&d.string(c.caption)&&c.caption.length>c.maxCaptionLength&&(m=c.caption.substr(0,c.maxCaptionLength)+"&hellip;"),l.get(0).innerHTML=m,i.append(l)}if(k){var n=a("<div/>").attr(g.description),o=c.description;d.number(c.maxDescriptionLength)&&c.maxDescriptionLength>0&&d.string(c.description)&&c.description.length>c.maxDescriptionLength&&(o=c.description.substr(0,c.maxDescriptionLength)+"&hellip;"),n.get(0).innerHTML=o,i.append(n)}}return c.$caption.appendTo(c.$inner),0===c.$el.find(c.sel.loader).length&&c.$el.append(a("<div/>",{class:c.cls.loader})),!0},append:function(){var a=this;if(a.isCreated&&!a.isAttached){a.tmpl.raise("append-item",[a]).isDefaultPrevented()||(a.tmpl.$el.append(a.$el),a.fixLayout&&a.fix(),a.isAttached=!0),a.isAttached&&a.tmpl.raise("appended-item",[a])}return a.isAttached},detach:function(){var a=this;if(a.isCreated&&a.isAttached){a.tmpl.raise("detach-item",[a]).isDefaultPrevented()||(a.$el.detach(),a.fixLayout&&a.unfix(),a.isAttached=!1),a.isAttached||a.tmpl.raise("detached-item",[a])}return!a.isAttached},load:function(){var b=this;if(d.promise(b._load))return b._load;if(!b.isCreated||!b.isAttached)return e.rejectWith("not created or attached");if(b.tmpl.raise("load-item",[b]).isDefaultPrevented())return e.rejectWith("default prevented");var c=b.cls,f=b.$image.get(0),g=f.src;return b.isLoading=!0,b.$el.removeClass(c.idle).removeClass(c.loaded).removeClass(c.error).addClass(c.loading),b._load=a.Deferred(function(a){f.onload=function(){f.onload=f.onerror=null,b.isLoading=!1,b.isLoaded=!0,b.$el.removeClass(c.loading).addClass(c.loaded),b.fixLayout&&b.unfix(),b.tmpl.raise("loaded-item",[b]),a.resolve(b)},f.onerror=function(){f.onload=f.onerror=null,b.isLoading=!1,b.isError=!0,b.$el.removeClass(c.loading).addClass(c.error),d.string(g)&&b.$image.prop("src",g),b.tmpl.raise("error-item",[b]),a.reject(b)},f.src=b.getThumbUrl(),f.complete&&f.onload()}).promise()},fix:function(){var a=this;if(null==a.tmpl)return a;if(a.isCreated&&!a.isLoading&&!a.isLoaded&&!a.isError){var b=a.width,c=a.height,e=a.$image.get(0);if(!isNaN(b)&&!isNaN(c)&&e){var f=d.fn(a.maxWidth)?a.maxWidth(a):a.$image.width();f<=0&&(f=b);var g=f/b,h=c*g;a.$image.css({width:f,height:h})}}return a},unfix:function(){var a=this;return null==a.tmpl?a:(a.isCreated&&a.$image.css({width:"",height:""}),a)},getThumbUrl:function(a){a=!!d.boolean(a)&&a;var c=this;return!a&&d.string(c._thumbUrl)?c._thumbUrl:c._thumbUrl=b.parseSrc(c.src,c.width,c.height,c.srcset,c.$anchor.innerWidth(),c.$anchor.innerHeight())},scrollTo:function(a){var b=this;if(b.isAttached){var d=b.bounds(),e=c.getViewportBounds();switch(a){case"top":d.left+=d.width/2-e.width/2,d.top-=e.height/5;break;default:d.left+=d.width/2-e.width/2,d.top+=d.height/2-e.height/2}window.scrollTo(d.left,d.top)}return b},bounds:function(){return this.isAttached?c.getElementBounds(this.$el):null},intersects:function(a){return!!this.isAttached&&this.bounds().intersects(a)},onAnchorClick:function(a){var b=a.data.self,c=b.tmpl.state.get(b);b.tmpl.state.update(c)},onCaptionClick:function(a){var b=a.data.self;b.$anchor.length>0&&b.$anchor.get(0).click()}}),b.template.configure("core",{item:{type:"item",id:"",href:"",src:"",srcset:"",width:0,height:0,title:"",alt:"",caption:"",description:"",tags:[],maxWidth:null,maxCaptionLength:0,maxDescriptionLength:0,showCaptionTitle:!0,showCaptionDescription:!0,attr:{elem:{},inner:{},anchor:{},image:{},caption:{elem:{},inner:{},title:{},description:{}}}}},{item:{elem:"fg-item",inner:"fg-item-inner",anchor:"fg-thumb",wrap:"fg-image-wrap",image:"fg-image",loader:"fg-loader",idle:"fg-idle",loading:"fg-loading",loaded:"fg-loaded",error:"fg-error",caption:{elem:"fg-caption",inner:"fg-caption-inner",title:"fg-caption-title",description:"fg-caption-desc"}}},{item:{}}),b.components.register("item",b.Item)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(a,b,c,d,e,f){b.Items=b.Component.extend({construct:function(a){var b=this;b._super(a),b.idMap={},b._fetched=null,b._arr=[],b._available=[],b._canvas=document.createElement("canvas");var d=b.tmpl.cls.item.caption;b.tmpl.sel.item.caption.all=c.selectify([d.elem,d.inner,d.title,d.description])},destroy:function(){var b=this,c=b.all(),d=[];c.length>0&&(b.tmpl.raise("destroy-items",[c]),d=a.map(c,function(a){return a.destroy()?a:null}),d.length>0&&b.tmpl.raise("destroyed-items",[d])),b.idMap={},b._canvas=b._fetched=null,b._arr=[],b._available=[],b._super()},fetch:function(b){var c=this;if(!b&&d.promise(c._fetched))return c._fetched;var e=c.tmpl,f=e.sel,g=e.opt.items,h=a.Deferred(),i=c.make(e.$el.find(f.item.elem));return d.empty(g)?(i.push.apply(i,c.make(window[e.id+"-items"])),h.resolve(i)):d.array(g)?(i.push.apply(i,c.make(g)),h.resolve(i)):d.string(g)?a.get(g).then(function(a){i.push.apply(i,c.make(a)),h.resolve(i)},function(a,b,c){console.log("FooGallery: GET items error.",g,a,b,c),h.resolve(i)}):h.resolve(i),h.then(function(a){c.setAll(a)}),c._fetched=h.promise()},all:function(){return this._arr.slice()},count:function(a){return a?this.all().length:this.available().length},available:function(){return this._available.slice()},get:function(a){return!d.empty(a)&&this.idMap[a]?this.idMap[a]:null},setAll:function(a){this._arr=d.array(a)?a:[],this.idMap=this.createIdMap(a),this._available=this.all()},setAvailable:function(a){this._available=d.array(a)?a:[]},reset:function(){this.setAvailable(this.all())},loadable:function(b){var e,f=this,g=f.tmpl.opt;return g.lazy&&(e=c.getViewportBounds(g.viewport)),d.array(b)?a.map(b,function(a){return a.isCreated&&a.isAttached&&!a.isLoading&&!a.isLoaded&&!a.isError&&(!g.lazy||g.lazy&&a.intersects(e))?a:null}):[]},creatable:function(c){return d.array(c)?a.map(c,function(a){return a instanceof b.Item&&!a.isCreated?a:null}):[]},appendable:function(c){return d.array(c)?a.map(c,function(a){return a instanceof b.Item&&a.isCreated&&!a.isAttached?a:null}):[]},detachable:function(c){return d.array(c)?a.map(c,function(a){return a instanceof b.Item&&a.isCreated&&a.isAttached?a:null}):[]},jquerify:function(b){return a(a.map(b,function(a){return a.$el.get()}))},make:function(c){var e=this,g=[];if(d.jq(c)||d.array(c)){var h=[],i=a.makeArray(c);if(0===i.length)return g;e.tmpl.raise("make-items",[i]).isDefaultPrevented()||(g=a.map(i,function(a){var c=e.type(a),g=f.extend(d.hash(a)?a:{},{type:c}),i=b.components.make(c,e.tmpl,g);return d.element(a)?i.parse(a)?(h.push(i),i):null:i})),g.length>0&&e.tmpl.raise("made-items",[g]),h.length>0&&e.tmpl.raise("parsed-items",[h])}return g},type:function(c){var e;if(d.hash(c))e=c.type;else if(d.element(c)){var f=a(c),g=this.tmpl.sel.item;e=f.find(g.anchor).data("type")}return d.string(e)&&b.components.contains(e)?e:"item"},create:function(b,c){var e=this,f=[],g=e.creatable(b);if(g.length>0){e.tmpl.raise("create-items",[g]).isDefaultPrevented()||(f=a.map(g,function(a){return a.create()?a:null})),f.length>0&&e.tmpl.raise("created-items",[f])}return d.boolean(c)&&c?e.append(b):f},append:function(b){var c=this,d=[],e=c.appendable(b);if(e.length>0){c.tmpl.raise("append-items",[e]).isDefaultPrevented()||(d=a.map(e,function(a){return a.append()?a:null})),d.length>0&&c.tmpl.raise("appended-items",[d])}return d},detach:function(b){var c=this,d=[],e=c.detachable(b);if(e.length>0){c.tmpl.raise("detach-items",[e]).isDefaultPrevented()||(d=a.map(e,function(a){return a.detach()?a:null})),d.length>0&&c.tmpl.raise("detached-items",[d])}return d},load:function(b){var c=this;if(b=c.loadable(b),b.length>0){if(!c.tmpl.raise("load-items",[b]).isDefaultPrevented()){var d=a.map(b,function(a){return a.load()});return e.when(d).done(function(a){c.tmpl.raise("loaded-items",[a])})}}return e.resolveWith([])},createIdMap:function(b){var c={};return a.each(b,function(a,b){d.empty(b.id)&&(b.id=""+(a+1)),c[b.id]=b}),c}}),b.components.register("items",b.Items)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(a,b,c,d){b.Paging=b.Component.extend({construct:function(a){var b=this;b._super(a),b.opt=b.tmpl.opt.paging,b.cls=b.tmpl.cls.paging,b.il8n=b.tmpl.il8n.paging,b.sel=b.tmpl.sel.paging,b.pushOrReplace=b.opt.pushOrReplace,b.type=b.opt.type,b.theme=b.opt.theme,b.size=b.opt.size,b.position=b.opt.position,b.scrollToTop=b.opt.scrollToTop,b.current=0,b.total=0,b.ctrls=[],b._arr=[]},destroy:function(){var b=this;b._arr.splice(0,b._arr.length),a.each(b.ctrls.splice(0,b.ctrls.length),function(a,b){b.destroy()}),b._super()},build:function(){var a=this,c=a.tmpl.items.available();a.total=a.size>0&&c.length>0?Math.ceil(c.length/a.size):1;for(var d=0;d<a.total;d++)a._arr.push(c.splice(0,a.size));if(a.total>1&&b.paging.hasCtrl(a.type)){var e,f,g=a.position;"both"!==g&&"top"!==g||(e=b.paging.makeCtrl(a.type,a.tmpl,a,"top"),e.create()&&(e.append(),a.ctrls.push(e))),"both"!==g&&"bottom"!==g||(f=b.paging.makeCtrl(a.type,a.tmpl,a,"bottom"),f.create()&&(f.append(),a.ctrls.push(f)))}},rebuild:function(){var b=this;b.current=0,b.total=0,b._arr.splice(0,b._arr.length),a.each(b.ctrls.splice(0,b.ctrls.length),function(a,b){b.destroy()}),b.build()},all:function(){return this._arr.slice()},available:function(){return this.get(this.current)},items:function(){return this.get(this.current)},controls:function(b){var c=this;c.isValid(b)&&a.each(c.ctrls,function(a,c){c.update(b)})},isValid:function(a){return d.number(a)&&a>0&&a<=this.total},number:function(a){return this.isValid(a)?a:0===this.current?1:this.current},create:function(a,b){var c=this;a=c.number(a);var d=a-1;c.tmpl.items.detach(c.tmpl.items.all()),c.current=a,c.tmpl.items.create(c._arr[d],!0)},get:function(a){var b=this;return b.isValid(a)?(a=b.number(a),b._arr[a-1]):[]},set:function(a,b,c,e){var f=this;if(f.isValid(a)){var g,h=f.number(a);if(h!==f.current){var i=f.current,j=function(){if(c=!d.boolean(c)||c,e=!!d.boolean(e)&&e,c&&1===f.current&&!f.tmpl.state.exists()&&(g=f.tmpl.state.get(),f.tmpl.state.update(g,f.pushOrReplace)),f.controls(a),f.create(h,e),c&&(g=f.tmpl.state.get(),f.tmpl.state.update(g,f.pushOrReplace)),f.scrollToTop&&d.boolean(b)&&b){var j=f.get(f.current);j.length>0&&j[0].scrollTo("top")}f.tmpl.raise("after-page-change",[f.current,i,e])};return!f.tmpl.raise("before-page-change",[f.current,h,j,e]).isDefaultPrevented()&&(j(),!0)}}return!1},find:function(b){for(var c=this,d=0,e=c._arr.length;d<e;d++)if(-1!==a.inArray(b,c._arr[d]))return d+1;return 0},contains:function(b,c){var d=this.get(b);return-1!==a.inArray(c,d)},first:function(){this.goto(1)},last:function(){this.goto(this._arr.length)},prev:function(){this.goto(this.current-1)},next:function(){this.goto(this.current+1)},goto:function(a){var b=this;b.set(a,!0)&&b.tmpl.loadAvailable()}}),b.PagingControl=b.Component.extend({construct:function(a,b,c){var d=this;d._super(a),d.pages=b,d.position=c,d.$container=null},create:function(){var b=this;return b.$container=a("<nav/>",{class:b.pages.cls.container}).addClass(b.pages.theme),!0},destroy:function(){var a=this;a.$container.remove(),a.$container=null},append:function(){var a=this;"top"===a.position?a.$container.insertBefore(a.tmpl.$el):a.$container.insertAfter(a.tmpl.$el)},update:function(a){}}),b.paging.register("default",b.Paging,null,{type:"none",theme:"fg-light",size:30,pushOrReplace:"push",position:"none",scrollToTop:!0},{container:"fg-paging-container"},null,-100)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(a,b,c,d){b.Dots=b.Paging.extend({}),b.DotsControl=b.PagingControl.extend({construct:function(b,c,d){this._super(b,c,d),this.$container=a(),this.$list=a(),this.$items=a()},create:function(){for(var b,c=this,d=c.pages.cls,e=c.pages.il8n,f=[],g=a("<ul/>",{class:d.list}),h=0,i=c.pages.total;h<i;h++)f.push(b=c.createItem(h+1,e.page)),g.append(b);return c.$list=g,c.$container=a("<nav/>",{class:d.container}).addClass(c.pages.theme).append(g),c.$items=a(a.map(f,function(a){return a.get()})),!0},append:function(){var a=this;"top"===a.position?a.$container.insertBefore(a.tmpl.$el):a.$container.insertAfter(a.tmpl.$el)},destroy:function(){var b=this,c=b.pages.sel;b.$list.find(c.link).off("click.foogallery",b.onLinkClick),b.$container.remove(),b.$container=a(),b.$list=a(),b.$items=a()},update:function(a){this.setSelected(a-1)},setSelected:function(b){var c=this,e=c.pages.cls,f=c.pages.il8n,g=c.pages.sel;c.$items.filter(g.selected).removeClass(e.selected).each(function(b,c){var e=a(c),f=e.data("label"),h=e.find(g.reader);d.string(f)&&0!==h.length&&h.html(f)}),c.$items.eq(b).addClass(e.selected).each(function(b,c){var e=a(c),h=e.find(g.reader),i=h.html();d.string(i)&&0!==h.length&&(e.data("label",i),h.html(f.current))})},createItem:function(b,c,e,f,g){e=d.string(e)?e:b,c=d.string(c)?c:"";var h=this,i=h.pages.opt,j=h.pages.cls,k=a("<a/>",{class:j.link,href:"#page-"+b}).html(e).on("click.foogallery",{self:h,page:b},h.onLinkClick);d.empty(c)||k.attr("title",c.replace(/\{PAGE}/g,b).replace(/\{LIMIT}/g,i.limit+"")),g=d.string(g)?g:c,d.empty(g)||k.prepend(a("<span/>",{class:j.reader,text:g.replace(/\{PAGE}/g,"").replace(/\{LIMIT}/g,i.limit+"")}));var l=a("<li/>",{class:j.item}).append(k);return f=d.string(f)?f:"",d.empty(f)||l.addClass(f),l},onLinkClick:function(b){b.preventDefault();var c=b.data.self,d=b.data.page,e=c.pages.sel;a(this).closest(e.item).is(e.disabled)||(c.pages.set(d,!0),c.tmpl.loadAvailable())}}),b.paging.register("dots",b.Dots,b.DotsControl,{type:"dots",position:"both",pushOrReplace:"push"},{list:"fg-dots",item:"fg-dot-item",link:"fg-dot-link",disabled:"fg-disabled",selected:"fg-selected",visible:"fg-visible",reader:"fg-sr-only"},{current:"Current page",page:"Page {PAGE}"})}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(a,b,c){b.DefaultTemplate=b.Template.extend({}),b.template.register("default",b.DefaultTemplate,null,{container:"foogallery fg-default"})}(FooGallery.$,FooGallery,FooGallery.utils),function(a,b,c,d){b.MasonryTemplate=b.Template.extend({construct:function(a,b){this._super(a,b),this.masonry=null,this.style=null,this.$columnWidth=null},getStylesheet:function(){var a=this;return null===a.style&&(a.style=document.createElement("style"),a.style.appendChild(document.createTextNode("")),document.head.appendChild(a.style)),a.style.sheet},onPreInit:function(b,c){var e=c.sel,f=c.cls;f.layouts=a.map(f.layout,function(a){return a}).join(" ");for(var g=a.map(f.layout,function(a,b){return{key:b,value:a}}),h=0,i=g.length;h<i;h++)if(c.$el.hasClass(g[h].value)){c.template.layout=g[h].key;break}d.string(f.layout[c.template.layout])||(c.template.layout="col4");var j,k,l="fixed"===c.template.layout;if(c.template.isFitWidth=l,c.template.percentPosition=!l,c.template.transitionDuration=0,c.template.itemSelector=e.item.elem,c.$el.removeClass(f.layouts).addClass(f.layout[c.template.layout]),l||(0===c.$el.find(e.gutterWidth).length&&c.$el.prepend(a("<div/>").addClass(f.gutterWidth)),c.template.gutter=e.gutterWidth),0===c.$el.find(e.columnWidth).length&&c.$el.prepend(a("<div/>").addClass(f.columnWidth)),l&&d.number(c.template.columnWidth)){var m=c.$el.find(e.columnWidth).width(c.template.columnWidth);j=c.getStylesheet(),k="#"+c.id+e.container+" "+e.item.elem+" { width: "+m.outerWidth()+"px; }",j.insertRule(k,0)}c.template.columnWidth=e.columnWidth,l&&d.number(c.template.gutter)&&(j=c.getStylesheet(),k="#"+c.id+e.container+" "+e.item.elem+" { margin-bottom: "+c.template.gutter+"px; }",j.insertRule(k,0)),c.masonry=new Masonry(c.$el.get(0),c.template)},onPostInit:function(a,b){b.masonry.layout()},onFirstLoad:function(a,b){b.masonry.layout()},onReady:function(a,b){b.masonry.layout()},onDestroy:function(a,b){b.$el.find(b.sel.columnWidth).remove(),b.$el.find(b.sel.gutterWidth).remove(),b.style&&b.style.parentNode&&b.style.parentNode.removeChild(b.style)},onDestroyed:function(a,b){b.masonry instanceof Masonry&&b.masonry.destroy()},onLayout:function(a,b){b.masonry.layout()},onParsedItems:function(a,b,c){b.masonry.layout()},onAppendedItems:function(a,b,c){c=b.items.jquerify(c),c=b.masonry.addItems(c),b.masonry.layoutItems(c,!0)},onDetachItem:function(a,b,c){a.isDefaultPrevented()||(a.preventDefault(),b.masonry.remove(c.$el),c.isAttached=!1,c.unfix())},onDetachedItems:function(a,b,c){b.masonry.layout()},onLoadedItems:function(a,b,c){b.masonry.layout()}}),b.template.register("masonry",b.MasonryTemplate,{template:{initLayout:!1,isInitLayout:!1,layout:"col4"}},{container:"foogallery fg-masonry",columnWidth:"fg-column-width",gutterWidth:"fg-gutter-width",layout:{fixed:"fg-masonry-fixed",col2:"fg-masonry-2col",col3:"fg-masonry-3col",col4:"fg-masonry-4col",col5:"fg-masonry-5col"}})}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(a,b,c,d){b.Justified=c.Class.extend({construct:function(c,d){this.tmpl=c,this.$el=c.$el,this.options=a.extend(!0,{},b.Justified.defaults,d),this._items=[],this._lastRefresh=0,this._refresh=null},init:function(){var b=this;d.string(b.options.maxRowHeight)&&(b.options.maxRowHeight.indexOf("%")?b.options.maxRowHeight=b.options.rowHeight*(parseInt(b.options.maxRowHeight)/100):b.options.maxRowHeight=parseInt(b.options.maxRowHeight)),a(window).on("resize.justified",{self:b},b.onWindowResize),this._refresh=setInterval(function(){b.refresh()},b.options.refreshInterval)},destroy:function(){this._refresh&&clearInterval(this._refresh),a(window).off("resize.justified"),this.$el.removeAttr("style")},refresh:function(){var a=this.getContainerWidth();a!=this._lastRefresh&&(this.layout(),this._lastRefresh=a)},parse:function(){var b=this;return b._items=a.map(b.tmpl.getItems(),function(a,b){return{index:b,width:a.width,height:a.height,top:0,left:0,$item:a.$el}})},getMaxRowHeight:function(){var a=this;return d.string(a.options.maxRowHeight)&&(a.options.maxRowHeight.indexOf("%")?a.options.maxRowHeight=a.options.rowHeight*(parseInt(a.options.maxRowHeight)/100):a.options.maxRowHeight=parseInt(a.options.maxRowHeight)),d.number(a.options.maxRowHeight)?a.options.maxRowHeight:a.options.rowHeight},getContainerWidth:function(){var a=this;return a.$el.is(":visible")?a.$el.width():a.$el.parents(":visible:first").innerWidth()},layout:function(b,c){b=!!d.boolean(b)&&b,c=!d.boolean(c)||c,(b||0===this._items.length)&&this.parse();var e=this,f=0,g=e.getContainerWidth(),h=e.getMaxRowHeight(),i=e.rows(g,h);a.each(i,function(a,b){b.visible&&(a>0&&(f+=e.options.margins),f+=b.height,e.render(b))}),e.$el.height(f),c&&e.getContainerWidth()<g&&e.layout(!1,!1)},render:function(a){for(var b,c=0,d=a.items.length;c<d;c++)b=a.items[c],a.visible?b.$item.css({width:b.width,height:b.height,top:b.top,left:b.left,display:"",maxHeight:this.options.maxRowHeight>0?this.options.maxRowHeight:""}).addClass("fg-positioned"):b.$item.css("display","none")},justify:function(a,b,c,d){var e=this,f=e.options.margins*(a.items.length-1),g=c-f,h=g/a.width;a.width=a.width*h,a.height=a.height*h,a.top=b,a.height>d&&(a.height=d),a.left=0,a.width<g&&(a.left=(g-a.width)/2),a.width+=f;for(var i,j=a.left,k=0,l=a.items.length;k<l;k++)k>0&&(j+=e.options.margins),i=a.items[k],i.left=j,i.top=b,i.width=i.width*h,i.height=i.height*h,i.height>d&&(i.height=d),j+=i.width;return a.height},position:function(a,b,c,d){var e=this,f=e.options.margins*(a.items.length-1),g=c-f;if(a.top=b,a.left=0,a.width<g)switch(d){case"center":a.left=(g-a.width)/2;break;case"right":a.left=g-a.width}a.width+=f;for(var h,i=a.left,j=0,k=a.items.length;j<k;j++)j>0&&(i+=e.options.margins),h=a.items[j],h.left=i,h.top=b,i+=h.width;return a.height},lastRow:function(a,b,c,d){var e=this,f=e.options.margins*(a.items.length-1),g=c-f,h=a.width/g>e.options.justifyThreshold;switch(e.options.lastRow){case"hide":h?e.justify(a,b,c,d):a.visible=!1;break;case"justify":e.justify(a,b,c,d);break;case"nojustify":h?e.justify(a,b,c,d):e.position(a,b,c,"left");break;case"left":case"center":case"right":h?e.justify(a,b,c,d):e.position(a,b,c,e.options.lastRow)}},items:function(){return a.map(this._items,function(a){return{index:a.index,width:a.width,height:a.height,$item:a.$item,top:a.top,left:a.left}})},rows:function(a,b){function c(){var a={index:++h,visible:!0,width:0,height:e.options.rowHeight,top:0,left:0,items:[]};return g.push(a),a}for(var d,e=this,f=e.items(),g=[],h=-1,i=c(),j=0,k=0,l=0,m=f.length;l<m;l++){if(d=f[l],d.height!=e.options.rowHeight){var n=e.options.rowHeight/d.height;d.height=d.height*n,d.width=d.width*n}k+d.width>a&&l>0&&(g.length>1&&(j+=e.options.margins),j+=e.justify(i,j,a,b),i=c(),k=0),i.items.length>0&&(k+=e.options.margins),k+=d.width,i.width+=d.width,i.items.push(d)}return g.length>1&&(j+=e.options.margins),e.lastRow(i,j,a,b),g},onWindowResize:function(a){a.data.self.layout(!0)}}),b.Justified.defaults={itemSelector:".fg-item",rowHeight:150,maxRowHeight:"200%",margins:0,lastRow:"center",justifyThreshold:.5,refreshInterval:250}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(a,b,c){b.JustifiedTemplate=b.Template.extend({onPreInit:function(a,c){c.justified=new b.Justified(c,c.template)},onInit:function(a,b){b.justified.init()},onFirstLoad:function(a,b){b.justified.layout(!0)},onReady:function(a,b){b.justified.layout(!0)},onDestroy:function(a,b){b.justified.destroy()},onLayout:function(a,b){b.justified.layout(!0)},onAfterPageChange:function(a,b,c,d,e){e||b.justified.layout(!0)},onAfterFilterChange:function(a,b){b.justified.layout(!0)}}),b.template.register("justified",b.JustifiedTemplate,null,{container:"foogallery fg-justified"})}(FooGallery.$,FooGallery,FooGallery.utils.is),function(a,b,c,d){b.Portfolio=c.Class.extend({construct:function(c,d){this.tmpl=c,this.$el=c.$el,this.options=a.extend(!0,{},b.Portfolio.defaults,d),this._items=[],this._lastWidth=0},init:function(){var b=this;a(window).on("resize.portfolio",{self:b},b.onWindowResize)},destroy:function(){a(window).off("resize.portfolio"),this.$el.removeAttr("style")},parse:function(){var b=this,c=b.$el.is(":visible"),d=b.getContainerWidth(),e=a("<div/>",{class:b.$el.attr("class")}).css({position:"absolute",top:0,left:-9999,visibility:"hidden",maxWidth:d}).appendTo("body");return b._items=a.map(b.tmpl.getItems(),function(a,b){var d=a.width,f=a.height;if(a.$caption.css("max-width",d),c)d=a.$el.outerWidth(),f=a.$el.outerHeight();else{var g=a.$el.clone();g.appendTo(e),d=g.outerWidth(),f=g.outerHeight()}return{index:b,width:d,height:f,top:0,left:0,$item:a.$el,$thumb:a.$thumb}}),e.remove(),b._items},round:function(a){return Math.round(2*a)/2},getContainerWidth:function(){var a=this;return a.$el.is(":visible")?a.$el.width():a.$el.parents(":visible:first").innerWidth()},layout:function(a,b){a=!!d.boolean(a)&&a,b=!d.boolean(b)||b;var c=this,e=c.getContainerWidth();0!=c._lastWidth&&Math.abs(e-c._lastWidth)>0&&(a=!0,c._lastWidth=e),(a||0===c._items.length)&&c.parse();for(var f,g=c.rows(e),h=0,i=0,j=g.length;i<j;i++)f=g[i],h=c.position(f,e,h,c.options.align),c.render(f);c.$el.height(h),0==c._lastWidth&&(c._lastWidth=e),b&&c.getContainerWidth()<e&&c.layout(!1,!1)},render:function(a){for(var b,c=0,d=a.items.length;c<d;c++)b=a.items[c],a.visible?b.$item.css({width:b.width,height:a.height,top:b.top,left:b.left,display:""}).addClass("fg-positioned"):b.$item.css("display","none")},position:function(a,b,c,d){var e=this,f=a.items[a.items.length-1],g=b-(f.left+f.width);a.index>0&&(c+=e.options.gutter),a.top=c;for(var h,i=0,j=a.items.length;i<j;i++)h=a.items[i],h.top=c,"center"===d?h.left+=g/2:"right"===d&&(h.left+=g);return c+a.height},items:function(){return a.map(this._items,function(a){return{index:a.index,width:a.width,height:a.height,$item:a.$item,$thumb:a.$thumb,top:a.top,left:a.left}})},rows:function(a){for(var b=this,c=b.items(),d=[],e=c.length>0,f=-1,g=0;e;){f+=1,f>0&&(g+=b.options.gutter);for(var h,i,j,k={index:f,visible:!0,top:g,width:0,height:0,items:[]},l=[],m=0,n=0,o=c.length;n<o&&(i=c[n],!((h=k.width+i.width)>a&&n>0));n++)h>a&&0==n&&(h=a,j=a/i.width,i.width=b.round(i.width*j),i.height=b.round(i.height*j),k.height=i.height),i.top=k.top,n>0&&(m+=b.options.gutter),n!==o-1&&(h+=b.options.gutter),i.left=m,m+=i.width,i.height>k.height&&(k.height=i.height),k.width=h,k.items.push(i),l.push(n);if(0===l.length){e=!1;break}l.sort(function(a,b){return b-a});for(var p=0,q=l.length;p<q;p++)c.splice(l[p],1);d.push(k),e=c.length>0}return d},onWindowResize:function(a){a.data.self.layout()}}),b.Portfolio.defaults={gutter:40,align:"center"}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(a,b,c){b.PortfolioTemplate=b.Template.extend({construct:function(a,b){this._super(a,b),this.portfolio=null},onPreInit:function(a,c){c.portfolio=new b.Portfolio(c,c.template)},onInit:function(a,b){b.portfolio.init()},onFirstLoad:function(a,b){b.portfolio.layout(!0)},onReady:function(a,b){b.portfolio.layout(!0)},onDestroy:function(a,b){b.portfolio.destroy()},onLayout:function(a,b){b.portfolio.layout(!0)},onAfterPageChange:function(a,b,c,d,e){e||b.portfolio.layout(!0)},onAfterFilterChange:function(a,b){b.portfolio.layout(!0)}}),b.template.register("simple_portfolio",b.PortfolioTemplate,{template:{gutter:40}},{container:"foogallery fg-simple_portfolio"})}(FooGallery.$,FooGallery,FooGallery.utils),function(a,b,c,d){b.ImageViewerTemplate=b.Template.extend({construct:function(b,c){this._super(d.extend({},b,{paging:{pushOrReplace:"replace",theme:"fg-light",type:"default",size:1,position:"none",scrollToTop:!1}}),c),this.$inner=a(),this.$current=a(),
11
+ this.$total=a(),this.$prev=a(),this.$next=a()},createChildren:function(){var b=this;return a("<div/>",{class:b.cls.inner}).append(a("<div/>",{class:b.cls.innerContainer}),a("<div/>",{class:b.cls.controls}).append(a("<div/>",{class:b.cls.prev}).append(a("<span/>",{text:b.il8n.prev})),a("<label/>",{class:b.cls.count,text:b.il8n.count}).prepend(a("<span/>",{class:b.cls.countCurrent,text:"0"})).append(a("<span/>",{class:b.cls.countTotal,text:"0"})),a("<div/>",{class:b.cls.next}).append(a("<span/>",{text:b.il8n.next}))))},destroyChildren:function(){var a=this;a.$el.find(a.sel.inner).remove()},onPreInit:function(a,b){b.$inner=b.$el.find(b.sel.innerContainer),b.$current=b.$el.find(b.sel.countCurrent),b.$total=b.$el.find(b.sel.countTotal),b.$prev=b.$el.find(b.sel.prev),b.$next=b.$el.find(b.sel.next)},onInit:function(a,b){b.template.attachFooBox&&b.$el.on("foobox.previous",{self:b},b.onFooBoxPrev).on("foobox.next",{self:b},b.onFooBoxNext),b.$prev.on("click",{self:b},b.onPrevClick),b.$next.on("click",{self:b},b.onNextClick)},onFirstLoad:function(a,b){b.update()},onDestroy:function(a,b){b.template.attachFooBox&&b.$el.off({"foobox.previous":b.onFooBoxPrev,"foobox.next":b.onFooBoxNext}),b.$prev.off("click",b.onPrevClick),b.$next.off("click",b.onNextClick)},onAppendItem:function(a,b,c){a.preventDefault(),b.$inner.append(c.$el),c.fix(),c.isAttached=!0},onAfterPageChange:function(a,b,c,d,e){e||b.update()},onAfterFilterChange:function(a,b){b.update()},update:function(){this.pages&&(this.$current.text(this.pages.current),this.$total.text(this.pages.total))},prev:function(){this.pages&&(this.template.loop&&1===this.pages.current?this.pages.last():this.pages.prev(),this.update())},next:function(){this.pages&&(this.template.loop&&this.pages.current===this.pages.total?this.pages.first():this.pages.next(),this.update())},onFooBoxPrev:function(a){a.data.self.prev()},onFooBoxNext:function(a){a.data.self.next()},onPrevClick:function(a){a.preventDefault(),a.stopPropagation(),a.data.self.prev()},onNextClick:function(a){a.preventDefault(),a.stopPropagation(),a.data.self.next()}}),b.template.register("image-viewer",b.ImageViewerTemplate,{template:{attachFooBox:!1,loop:!1}},{container:"foogallery fg-image-viewer",inner:"fiv-inner",innerContainer:"fiv-inner-container",controls:"fiv-ctrls",prev:"fiv-prev",next:"fiv-next",count:"fiv-count",countCurrent:"fiv-count-current",countTotal:"fiv-count-total"},{prev:"Prev",next:"Next",count:"of"})}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.obj),function(a,b,c){b.ThumbnailTemplate=b.Template.extend({construct:function(a,b){this._super(c.extend({},a,{filtering:{type:"none"},paging:{pushOrReplace:"replace",theme:"fg-light",type:"default",size:1,position:"none",scrollToTop:!1}}),b)}}),b.template.register("thumbnail",b.ThumbnailTemplate,null,{container:"foogallery fg-thumbnail"})}(FooGallery.$,FooGallery,FooGallery.utils.obj),function(a,b,c,d){b.triggerPostLoad=function(b,c,d,e,f){if("first-load"===b.type||c.initialized&&("after-page-change"===b.type&&!f||"after-filter-change"===b.type))try{if(c.$el.parents(".fbx-item").length>0)return;c.$el.hasClass("fbx-instance")&&window.FOOBOX&&a.fn.foobox?c.$el.foobox(window.FOOBOX.o):a("body").trigger("post-load")}catch(a){console.error(a)}},b.autoDefaults={on:{"first-load.foogallery after-page-change.foogallery after-filter-change.foogallery":b.triggerPostLoad}},b.auto=function(a){b.autoDefaults=d.merge(b.autoDefaults,a)},b.load=b.reload=function(){a(function(){a('[id^="foogallery-gallery-"]:not(.fg-ready)').foogallery(b.autoDefaults)}),c.ready(function(){a('[id^="foogallery-gallery-"].fg-ready').foogallery(b.autoDefaults)})},b.load()}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.obj);
foogallery.php CHANGED
@@ -3,15 +3,13 @@
3
  /*
4
  Plugin Name: FooGallery
5
  Description: FooGallery is the most intuitive and extensible gallery management tool ever created for WordPress
6
- Version: 1.6.15
7
  Author: FooPlugins
8
  Plugin URI: https://foo.gallery
9
  Author URI: http://fooplugins.com
10
  Text Domain: foogallery
11
  License: GPL-2.0+
12
- Domain Path: /languages
13
-
14
- @fs_premium_only /pro/
15
  */
16
  // If this file is called directly, abort.
17
  if ( !defined( 'WPINC' ) ) {
@@ -27,7 +25,7 @@ if ( function_exists( 'foogallery_fs' ) ) {
27
  define( 'FOOGALLERY_PATH', plugin_dir_path( __FILE__ ) );
28
  define( 'FOOGALLERY_URL', plugin_dir_url( __FILE__ ) );
29
  define( 'FOOGALLERY_FILE', __FILE__ );
30
- define( 'FOOGALLERY_VERSION', '1.6.15' );
31
  define( 'FOOGALLERY_SETTINGS_VERSION', '2' );
32
  require_once FOOGALLERY_PATH . 'includes/constants.php';
33
  // Create a helper function for easy SDK access.
@@ -153,6 +151,7 @@ if ( function_exists( 'foogallery_fs' ) ) {
153
  new FooGallery_Compatibility();
154
  new FooGallery_Extensions_Compatibility();
155
  new FooGallery_Default_Crop_Position();
 
156
  $checker = new FooGallery_Version_Check();
157
  $checker->wire_up_checker();
158
  new FooGallery_Widget_Init();
3
  /*
4
  Plugin Name: FooGallery
5
  Description: FooGallery is the most intuitive and extensible gallery management tool ever created for WordPress
6
+ Version: 1.7.6
7
  Author: FooPlugins
8
  Plugin URI: https://foo.gallery
9
  Author URI: http://fooplugins.com
10
  Text Domain: foogallery
11
  License: GPL-2.0+
12
+ Domain Path: /languages
 
 
13
  */
14
  // If this file is called directly, abort.
15
  if ( !defined( 'WPINC' ) ) {
25
  define( 'FOOGALLERY_PATH', plugin_dir_path( __FILE__ ) );
26
  define( 'FOOGALLERY_URL', plugin_dir_url( __FILE__ ) );
27
  define( 'FOOGALLERY_FILE', __FILE__ );
28
+ define( 'FOOGALLERY_VERSION', '1.7.6' );
29
  define( 'FOOGALLERY_SETTINGS_VERSION', '2' );
30
  require_once FOOGALLERY_PATH . 'includes/constants.php';
31
  // Create a helper function for easy SDK access.
151
  new FooGallery_Compatibility();
152
  new FooGallery_Extensions_Compatibility();
153
  new FooGallery_Default_Crop_Position();
154
+ new FooGallery_ForceHttps();
155
  $checker = new FooGallery_Version_Check();
156
  $checker->wire_up_checker();
157
  new FooGallery_Widget_Init();
freemius/templates/debug.php CHANGED
@@ -1,726 +1,726 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
- * @since 1.1.1
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- global $fs_active_plugins;
14
-
15
- $fs_options = FS_Options::instance( WP_FS__ACCOUNTS_OPTION_NAME, true );
16
-
17
- $off_text = fs_text_x_inline( 'Off', 'as turned off' );
18
- $on_text = fs_text_x_inline( 'On', 'as turned on' );
19
- ?>
20
- <h1><?php echo fs_text_inline( 'Freemius Debug' ) . ' - ' . fs_text_inline( 'SDK' ) . ' v.' . $fs_active_plugins->newest->version ?></h1>
21
- <div>
22
- <!-- Debugging Switch -->
23
- <?php //$debug_mode = get_option( 'fs_debug_mode', null ) ?>
24
- <span class="switch-label"><?php fs_esc_html_echo_x_inline( 'Debugging', 'as code debugging' ) ?></span>
25
-
26
- <div class="switch <?php echo WP_FS__DEBUG_SDK ? 'off' : 'on' ?>">
27
- <div class="toggle"></div>
28
- <span class="on"><?php echo esc_html( $on_text ) ?></span>
29
- <span class="off"><?php echo esc_html( $off_text ) ?></span>
30
- </div>
31
- <script type="text/javascript">
32
- (function ($) {
33
- $(document).ready(function () {
34
- // Switch toggle
35
- $('.switch').click(function () {
36
- $(this)
37
- .toggleClass('on')
38
- .toggleClass('off');
39
-
40
- $.post(ajaxurl, {
41
- action: 'fs_toggle_debug_mode',
42
- is_on : ($(this).hasClass('off') ? 1 : 0)
43
- }, function (response) {
44
- if (1 == response) {
45
- // Refresh page on success.
46
- location.reload();
47
- }
48
- });
49
- });
50
- });
51
- }(jQuery));
52
- </script>
53
- </div>
54
- <h2><?php fs_esc_html_echo_inline( 'Actions', 'actions' ) ?></h2>
55
- <table>
56
- <tbody>
57
- <tr>
58
- <td>
59
- <!-- Delete All Accounts -->
60
- <form action="" method="POST">
61
- <input type="hidden" name="fs_action" value="restart_freemius">
62
- <?php wp_nonce_field( 'restart_freemius' ) ?>
63
- <button class="button button-primary"
64
- onclick="if (confirm('<?php fs_esc_attr_echo_inline( 'Are you sure you want to delete all Freemius data?', 'delete-all-confirm' ) ?>')) this.parentNode.submit(); return false;"><?php fs_esc_html_echo_inline( 'Delete All Accounts' ) ?></button>
65
- </form>
66
- </td>
67
- <td>
68
- <!-- Clear API Cache -->
69
- <form action="" method="POST">
70
- <input type="hidden" name="fs_clear_api_cache" value="true">
71
- <button class="button button-primary"><?php fs_esc_html_echo_inline( 'Clear API Cache' ) ?></button>
72
- </form>
73
- </td>
74
- <td>
75
- <!-- Clear Updates Transients -->
76
- <form action="" method="POST">
77
- <input type="hidden" name="fs_action" value="clear_updates_data">
78
- <?php wp_nonce_field( 'clear_updates_data' ) ?>
79
- <button class="button"><?php fs_esc_html_echo_inline( 'Clear Updates Transients' ) ?></button>
80
- </form>
81
- </td>
82
- <td>
83
- <!-- Sync Data with Server -->
84
- <form action="" method="POST">
85
- <input type="hidden" name="background_sync" value="true">
86
- <button class="button button-primary"><?php fs_esc_html_echo_inline( 'Sync Data From Server' ) ?></button>
87
- </form>
88
- </td>
89
- <?php if ( fs_is_network_admin() && true !== $fs_options->get_option( 'ms_migration_complete', false, true ) ) : ?>
90
- <td>
91
- <!-- Migrate Options to Network -->
92
- <form action="" method="POST">
93
- <input type="hidden" name="fs_action" value="migrate_options_to_network">
94
- <?php wp_nonce_field( 'migrate_options_to_network' ) ?>
95
- <button class="button button-primary"><?php fs_esc_html_echo_inline( 'Migrate Options to Network' ) ?></button>
96
- </form>
97
- </td>
98
- <?php endif ?>
99
- <td>
100
- <button id="fs_load_db_option" class="button"><?php fs_esc_html_echo_inline( 'Load DB Option' ) ?></button>
101
- </td>
102
- <td>
103
- <button id="fs_set_db_option" class="button"><?php fs_esc_html_echo_inline( 'Set DB Option' ) ?></button>
104
- </td>
105
- </tr>
106
- </tbody>
107
- </table>
108
- <script type="text/javascript">
109
- (function ($) {
110
- $('#fs_load_db_option').click(function () {
111
- var optionName = prompt('Please enter the option name:');
112
-
113
- if (optionName) {
114
- $.post(ajaxurl, {
115
- action : 'fs_get_db_option',
116
- _wpnonce : '<?php echo wp_create_nonce( 'fs_get_db_option' ) ?>',
117
- option_name: optionName
118
- }, function (response) {
119
- if (response.data.value)
120
- prompt('The option value is:', response.data.value);
121
- else
122
- alert('Oops... Option does not exist in the DB.');
123
- });
124
- }
125
- });
126
-
127
- $('#fs_set_db_option').click(function () {
128
- var optionName = prompt('Please enter the option name:');
129
-
130
- if (optionName) {
131
- var optionValue = prompt('Please enter the option value:');
132
-
133
- if (optionValue) {
134
- $.post(ajaxurl, {
135
- action : 'fs_set_db_option',
136
- _wpnonce : '<?php echo wp_create_nonce( 'fs_set_db_option' ) ?>',
137
- option_name : optionName,
138
- option_value: optionValue
139
- }, function () {
140
- alert('Option was successfully set.');
141
- });
142
- }
143
- }
144
- });
145
- })(jQuery);
146
- </script>
147
- <?php
148
- if ( ! defined( 'FS_API__ADDRESS' ) ) {
149
- define( 'FS_API__ADDRESS', '://api.freemius.com' );
150
- }
151
- if ( ! defined( 'FS_API__SANDBOX_ADDRESS' ) ) {
152
- define( 'FS_API__SANDBOX_ADDRESS', '://sandbox-api.freemius.com' );
153
- }
154
-
155
- $defines = array(
156
- array(
157
- 'key' => 'WP_FS__REMOTE_ADDR',
158
- 'val' => WP_FS__REMOTE_ADDR,
159
- ),
160
- array(
161
- 'key' => 'WP_FS__ADDRESS_PRODUCTION',
162
- 'val' => WP_FS__ADDRESS_PRODUCTION,
163
- ),
164
- array(
165
- 'key' => 'FS_API__ADDRESS',
166
- 'val' => FS_API__ADDRESS,
167
- ),
168
- array(
169
- 'key' => 'FS_API__SANDBOX_ADDRESS',
170
- 'val' => FS_API__SANDBOX_ADDRESS,
171
- ),
172
- array(
173
- 'key' => 'WP_FS__DIR',
174
- 'val' => WP_FS__DIR,
175
- ),
176
- )
177
- ?>
178
- <br>
179
- <table class="widefat">
180
- <thead>
181
- <tr>
182
- <th><?php fs_esc_html_echo_inline( 'Key', 'key' ) ?></th>
183
- <th><?php fs_esc_html_echo_inline( 'Value', 'value' ) ?></th>
184
- </tr>
185
- </thead>
186
- <tbody>
187
- <?php $alternate = false;
188
- foreach ( $defines as $p ) : ?>
189
- <tr<?php if ( $alternate ) {
190
- echo ' class="alternate"';
191
- } ?>>
192
- <td><?php echo $p['key'] ?></td>
193
- <td><?php echo $p['val'] ?></td>
194
- </tr>
195
- <?php $alternate = ! $alternate ?>
196
- <?php endforeach ?>
197
- </tbody>
198
- </table>
199
- <h2><?php fs_esc_html_echo_x_inline( 'SDK Versions', 'as software development kit versions', 'sdk-versions' ) ?></h2>
200
- <table id="fs_sdks" class="widefat">
201
- <thead>
202
- <tr>
203
- <th><?php fs_esc_html_echo_x_inline( 'Version', 'product version' ) ?></th>
204
- <th><?php fs_esc_html_echo_inline( 'SDK Path' ) ?></th>
205
- <th><?php fs_esc_html_echo_inline( 'Module Path' ) ?></th>
206
- <th><?php fs_esc_html_echo_inline( 'Is Active' ) ?></th>
207
- </tr>
208
- </thead>
209
- <tbody>
210
- <?php foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) : ?>
211
- <?php $is_active = ( WP_FS__SDK_VERSION == $data->version ) ?>
212
- <tr<?php if ( $is_active ) {
213
- echo ' style="background: #E6FFE6; font-weight: bold"';
214
- } ?>>
215
- <td><?php echo $data->version ?></td>
216
- <td><?php echo $sdk_path ?></td>
217
- <td><?php echo $data->plugin_path ?></td>
218
- <td><?php echo ( $is_active ) ? 'Active' : 'Inactive' ?></td>
219
- </tr>
220
- <?php endforeach ?>
221
- </tbody>
222
- </table>
223
-
224
- <?php
225
- $module_types = array(
226
- WP_FS__MODULE_TYPE_PLUGIN,
227
- WP_FS__MODULE_TYPE_THEME
228
- );
229
- ?>
230
-
231
- <?php foreach ( $module_types as $module_type ) : ?>
232
- <?php $modules = $fs_options->get_option( $module_type . 's' ) ?>
233
- <?php if ( is_array( $modules ) && count( $modules ) > 0 ) : ?>
234
- <h2><?php echo esc_html( ( WP_FS__MODULE_TYPE_PLUGIN == $module_type ) ? fs_text_inline( 'Plugins', 'plugins' ) : fs_text_inline( 'Themes', 'themes' ) ) ?></h2>
235
- <table id="fs_<?php echo $module_type ?>" class="widefat">
236
- <thead>
237
- <tr>
238
- <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
239
- <th><?php fs_esc_html_echo_inline( 'Slug' ) ?></th>
240
- <th><?php fs_esc_html_echo_x_inline( 'Version', 'product version' ) ?></th>
241
- <th><?php fs_esc_html_echo_inline( 'Title' ) ?></th>
242
- <th><?php fs_esc_html_echo_x_inline( 'API', 'as application program interface' ) ?></th>
243
- <th><?php fs_esc_html_echo_inline( 'Freemius State' ) ?></th>
244
- <th><?php fs_esc_html_echo_inline( 'Module Path' ) ?></th>
245
- <th><?php fs_esc_html_echo_inline( 'Public Key' ) ?></th>
246
- <?php if ( is_multisite() ) : ?>
247
- <th><?php fs_esc_html_echo_inline( 'Network Blog' ) ?></th>
248
- <th><?php fs_esc_html_echo_inline( 'Network User' ) ?></th>
249
- <?php endif ?>
250
- <th><?php fs_esc_html_echo_inline( 'Actions' ) ?></th>
251
- </tr>
252
- </thead>
253
- <tbody>
254
- <?php foreach ( $modules as $slug => $data ) : ?>
255
- <?php
256
- if ( WP_FS__MODULE_TYPE_THEME !== $module_type ) {
257
- $is_active = is_plugin_active( $data->file );
258
- } else {
259
- $current_theme = wp_get_theme();
260
- $is_active = ( $current_theme->stylesheet === $data->file );
261
-
262
- if ( ! $is_active && is_child_theme() ) {
263
- $parent_theme = $current_theme->parent();
264
-
265
- $is_active = ( ( $parent_theme instanceof WP_Theme ) && $parent_theme->stylesheet === $data->file );
266
- }
267
- }
268
- ?>
269
- <?php $fs = $is_active ? freemius( $data->id ) : null ?>
270
- <tr<?php if ( $is_active ) {
271
- if ( $fs->has_api_connectivity() && $fs->is_on() ) {
272
- echo ' style="background: #E6FFE6; font-weight: bold"';
273
- } else {
274
- echo ' style="background: #ffd0d0; font-weight: bold"';
275
- }
276
- } ?>>
277
- <td><?php echo $data->id ?></td>
278
- <td><?php echo $slug ?></td>
279
- <td><?php echo $data->version ?></td>
280
- <td><?php echo $data->title ?></td>
281
- <td<?php if ( $is_active && ! $fs->has_api_connectivity() ) {
282
- echo ' style="color: red; text-transform: uppercase;"';
283
- } ?>><?php if ( $is_active ) {
284
- echo esc_html( $fs->has_api_connectivity() ?
285
- fs_text_x_inline( 'Connected', 'as connection was successful' ) :
286
- fs_text_x_inline( 'Blocked', 'as connection blocked' )
287
- );
288
- } ?></td>
289
- <td<?php if ( $is_active && ! $fs->is_on() ) {
290
- echo ' style="color: red; text-transform: uppercase;"';
291
- } ?>><?php if ( $is_active ) {
292
- echo esc_html( $fs->is_on() ?
293
- $on_text :
294
- $off_text
295
- );
296
- } ?></td>
297
- <td><?php echo $data->file ?></td>
298
- <td><?php echo $data->public_key ?></td>
299
- <?php if ( is_multisite() ) : ?>
300
- <?php
301
- $network_blog_id = null;
302
- $network_user = null;
303
-
304
- if ( is_object( $fs ) ) {
305
- $network_blog_id = $fs->get_network_install_blog_id();
306
- $network_user = $fs->get_network_user();
307
- }
308
- ?>
309
- <td><?php echo is_numeric( $network_blog_id ) ? $network_blog_id : '' ?></td>
310
- <td><?php if ( is_object( $network_user ) ) {
311
- echo $network_user->email;
312
- } ?></td>
313
- <?php endif ?>
314
- <td>
315
- <?php if ( $is_active ) : ?>
316
- <?php if ( $fs->has_trial_plan() ) : ?>
317
- <form action="" method="POST">
318
- <input type="hidden" name="fs_action" value="simulate_trial">
319
- <input type="hidden" name="module_id" value="<?php echo $fs->get_id() ?>">
320
- <?php wp_nonce_field( 'simulate_trial' ) ?>
321
-
322
- <button type="submit" class="button button-primary simulate-trial"><?php fs_esc_html_echo_inline( 'Simulate Trial Promotion' ) ?></button>
323
- </form>
324
- <?php endif ?>
325
- <?php if ( $fs->is_registered() ) : ?>
326
- <a class="button" href="<?php echo $fs->get_account_url() ?>"><?php fs_esc_html_echo_inline( 'Account', 'account' ) ?></a>
327
- <?php endif ?>
328
- <?php if ( fs_is_network_admin() && ! $fs->is_network_upgrade_mode() ) : ?>
329
- <form action="" method="POST">
330
- <input type="hidden" name="fs_action" value="simulate_network_upgrade">
331
- <input type="hidden" name="module_id" value="<?php echo $fs->get_id() ?>">
332
- <?php wp_nonce_field( 'simulate_network_upgrade' ) ?>
333
-
334
- <button type="submit" class="button button-small"><?php fs_esc_html_echo_inline( 'Simulate Network Upgrade' ) ?></button>
335
- </form>
336
- <?php endif ?>
337
- <?php endif ?>
338
- </td>
339
- </tr>
340
- <?php endforeach ?>
341
- </tbody>
342
- </table>
343
- <?php endif ?>
344
- <?php endforeach ?>
345
- <?php foreach ( $module_types as $module_type ) : ?>
346
- <?php
347
- /**
348
- * @var array $VARS
349
- * @var array[string]FS_Site|array[string]FS_Site[] $sites_map
350
- */
351
- $sites_map = $VARS[ $module_type . '_sites' ];
352
-
353
- $is_multisite = is_multisite();
354
- $all_plans = false;
355
- $plans = false;
356
- ?>
357
- <?php if ( is_array( $sites_map ) && count( $sites_map ) > 0 ) : ?>
358
- <h2><?php echo esc_html( sprintf(
359
- /* translators: %s: 'plugin' or 'theme' */
360
- fs_text_inline( '%s Installs', 'module-installs' ),
361
- ( WP_FS__MODULE_TYPE_PLUGIN === $module_type ? fs_text_inline( 'Plugin', 'plugin' ) : fs_text_inline( 'Theme', 'theme' ) )
362
- ) ) ?> / <?php fs_esc_html_echo_x_inline( 'Sites', 'like websites', 'sites' ) ?></h2>
363
- <table id="fs_<?php echo $module_type ?>_installs" class="widefat">
364
- <thead>
365
- <tr>
366
- <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
367
- <?php if ( $is_multisite ) : ?>
368
- <th><?php fs_esc_html_echo_inline( 'Blog ID' ) ?></th>
369
- <th><?php fs_esc_html_echo_inline( 'Address' ) ?></th>
370
- <?php endif ?>
371
- <th><?php fs_esc_html_echo_inline( 'Slug' ) ?></th>
372
- <th><?php fs_esc_html_echo_inline( 'User ID' ) ?></th>
373
- <th><?php fs_esc_html_echo_x_inline( 'Plan', 'as product pricing plan', 'plan' ) ?></th>
374
- <th><?php fs_esc_html_echo_inline( 'Public Key' ) ?></th>
375
- <th><?php fs_esc_html_echo_inline( 'Secret Key' ) ?></th>
376
- <th><?php fs_esc_html_echo_inline( 'Actions' ) ?></th>
377
- </tr>
378
- </thead>
379
- <tbody>
380
- <?php foreach ( $sites_map as $slug => $sites ) : ?>
381
- <?php if ( ! is_array( $sites ) ) {
382
- $sites = array( $sites );
383
- } ?>
384
- <?php foreach ( $sites as $site ) : ?>
385
- <tr>
386
- <td><?php echo $site->id ?></td>
387
- <?php if ( $is_multisite ) : ?>
388
- <td><?php echo $site->blog_id ?></td>
389
- <td><?php echo fs_strip_url_protocol( $site->url ) ?></td>
390
- <?php endif ?>
391
- <td><?php echo $slug ?></td>
392
- <td><?php echo $site->user_id ?></td>
393
- <td><?php
394
- $plan_name = '';
395
- if ( FS_Plugin_Plan::is_valid_id( $site->plan_id ) ) {
396
- if ( false === $all_plans ) {
397
- $option_name = 'plans';
398
- if ( WP_FS__MODULE_TYPE_PLUGIN !== $module_type ) {
399
- $option_name = $module_type . '_' . $option_name;
400
- }
401
-
402
- $all_plans = $fs_options->get_option( $option_name, array() );
403
- }
404
-
405
- if ( false === $plans ) {
406
- $plans = $all_plans[ $slug ];
407
- }
408
-
409
- foreach ( $plans as $plan ) {
410
- $plan_id = Freemius::_decrypt( $plan->id );
411
-
412
- if ( $site->plan_id == $plan_id ) {
413
- $plan_name = Freemius::_decrypt( $plan->name );
414
- break;
415
- }
416
- }
417
- }
418
-
419
- echo $plan_name;
420
- ?></td>
421
- <td><?php echo $site->public_key ?></td>
422
- <td><?php echo esc_html( $site->secret_key ) ?></td>
423
- <td>
424
- <form action="" method="POST">
425
- <input type="hidden" name="fs_action" value="delete_install">
426
- <?php wp_nonce_field( 'delete_install' ) ?>
427
- <input type="hidden" name="module_id" value="<?php echo $site->plugin_id ?>">
428
- <?php if ( $is_multisite ) : ?>
429
- <input type="hidden" name="blog_id" value="<?php echo $site->blog_id ?>">
430
- <?php endif ?>
431
- <input type="hidden" name="module_type" value="<?php echo $module_type ?>">
432
- <input type="hidden" name="slug" value="<?php echo $slug ?>">
433
- <button type="submit" class="button"><?php fs_esc_html_echo_x_inline( 'Delete', 'verb', 'delete' ) ?></button>
434
- </form>
435
- </td>
436
- </tr>
437
- <?php endforeach ?>
438
- <?php endforeach ?>
439
- </tbody>
440
- </table>
441
- <?php endif ?>
442
- <?php endforeach ?>
443
- <?php
444
- $addons = $VARS['addons'];
445
- ?>
446
- <?php foreach ( $addons as $plugin_id => $plugin_addons ) : ?>
447
- <h2><?php echo esc_html( sprintf( fs_text_inline( 'Add Ons of module %s', 'addons-of-x' ), $plugin_id ) ) ?></h2>
448
- <table id="fs_addons" class="widefat">
449
- <thead>
450
- <tr>
451
- <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
452
- <th><?php fs_esc_html_echo_inline( 'Title' ) ?></th>
453
- <th><?php fs_esc_html_echo_inline( 'Slug' ) ?></th>
454
- <th><?php fs_esc_html_echo_x_inline( 'Version', 'product version' ) ?></th>
455
- <th><?php fs_esc_html_echo_inline( 'Public Key' ) ?></th>
456
- <th><?php fs_esc_html_echo_inline( 'Secret Key' ) ?></th>
457
- </tr>
458
- </thead>
459
- <tbody>
460
- <?php
461
- /**
462
- * @var FS_Plugin[] $plugin_addons
463
- */
464
- foreach ( $plugin_addons as $addon ) : ?>
465
- <tr>
466
- <td><?php echo $addon->id ?></td>
467
- <td><?php echo $addon->title ?></td>
468
- <td><?php echo $addon->slug ?></td>
469
- <td><?php echo $addon->version ?></td>
470
- <td><?php echo $addon->public_key ?></td>
471
- <td><?php echo esc_html( $addon->secret_key ) ?></td>
472
- </tr>
473
- <?php endforeach ?>
474
- </tbody>
475
- </table>
476
- <?php endforeach ?>
477
- <?php
478
- /**
479
- * @var FS_User[] $users
480
- */
481
- $users = $VARS['users'];
482
- ?>
483
- <?php if ( is_array( $users ) && 0 < count( $users ) ) : ?>
484
- <h2><?php fs_esc_html_echo_inline( 'Users' ) ?></h2>
485
- <table id="fs_users" class="widefat">
486
- <thead>
487
- <tr>
488
- <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
489
- <th><?php fs_esc_html_echo_inline( 'Name' ) ?></th>
490
- <th><?php fs_esc_html_echo_inline( 'Email' ) ?></th>
491
- <th><?php fs_esc_html_echo_inline( 'Verified' ) ?></th>
492
- <th><?php fs_esc_html_echo_inline( 'Public Key' ) ?></th>
493
- <th><?php fs_esc_html_echo_inline( 'Secret Key' ) ?></th>
494
- <th><?php fs_esc_html_echo_inline( 'Actions' ) ?></th>
495
- </tr>
496
- </thead>
497
- <tbody>
498
- <?php foreach ( $users as $user_id => $user ) : ?>
499
- <tr>
500
- <td><?php echo $user->id ?></td>
501
- <td><?php echo $user->get_name() ?></td>
502
- <td><a href="mailto:<?php echo esc_attr( $user->email ) ?>"><?php echo $user->email ?></a></td>
503
- <td><?php echo json_encode( $user->is_verified ) ?></td>
504
- <td><?php echo $user->public_key ?></td>
505
- <td><?php echo esc_html( $user->secret_key ) ?></td>
506
- <td>
507
- <form action="" method="POST">
508
- <input type="hidden" name="fs_action" value="delete_user">
509
- <?php wp_nonce_field( 'delete_user' ) ?>
510
- <input type="hidden" name="user_id" value="<?php echo $user->id ?>">
511
- <button type="submit" class="button"><?php fs_esc_html_echo_x_inline( 'Delete', 'verb', 'delete' ) ?></button>
512
- </form>
513
- </td>
514
- </tr>
515
- <?php endforeach ?>
516
- </tbody>
517
- </table>
518
- <?php endif ?>
519
- <?php foreach ( $module_types as $module_type ) : ?>
520
- <?php $licenses = $VARS[ $module_type . '_licenses' ] ?>
521
- <?php if ( is_array( $licenses ) && count( $licenses ) > 0 ) : ?>
522
- <h2><?php echo esc_html( sprintf( fs_text_inline( '%s Licenses', 'module-licenses' ), ( WP_FS__MODULE_TYPE_PLUGIN === $module_type ? fs_text_inline( 'Plugin', 'plugin' ) : fs_text_inline( 'Theme', 'theme' ) ) ) ) ?></h2>
523
- <table id="fs_<?php echo $module_type ?>_licenses" class="widefat">
524
- <thead>
525
- <tr>
526
- <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
527
- <th><?php fs_esc_html_echo_inline( 'Plugin ID' ) ?></th>
528
- <th><?php fs_esc_html_echo_inline( 'User ID' ) ?></th>
529
- <th><?php fs_esc_html_echo_inline( 'Plan ID' ) ?></th>
530
- <th><?php fs_esc_html_echo_inline( 'Quota' ) ?></th>
531
- <th><?php fs_esc_html_echo_inline( 'Activated' ) ?></th>
532
- <th><?php fs_esc_html_echo_inline( 'Blocking' ) ?></th>
533
- <th><?php fs_esc_html_echo_inline( 'License Key' ) ?></th>
534
- <th><?php fs_esc_html_echo_x_inline( 'Expiration', 'as expiration date' ) ?></th>
535
- </tr>
536
- </thead>
537
- <tbody>
538
- <?php foreach ( $licenses as $license ) : ?>
539
- <tr>
540
- <td><?php echo $license->id ?></td>
541
- <td><?php echo $license->plugin_id ?></td>
542
- <td><?php echo $license->user_id ?></td>
543
- <td><?php echo $license->plan_id ?></td>
544
- <td><?php echo $license->is_unlimited() ? 'Unlimited' : ( $license->is_single_site() ? 'Single Site' : $license->quota ) ?></td>
545
- <td><?php echo $license->activated ?></td>
546
- <td><?php echo $license->is_block_features ? 'Blocking' : 'Flexible' ?></td>
547
- <td><?php echo esc_html( $license->secret_key ) ?></td>
548
- <td><?php echo $license->expiration ?></td>
549
- </tr>
550
- <?php endforeach ?>
551
- </tbody>
552
- </table>
553
- <?php endif ?>
554
- <?php endforeach ?>
555
- <?php if ( FS_Logger::is_storage_logging_on() ) : ?>
556
-
557
- <h2><?php fs_esc_html_echo_inline( 'Debug Log', 'debug-log' ) ?></h2>
558
-
559
- <div id="fs_debug_filters">
560
- <select name="type">
561
- <option value="" selected="selected"><?php fs_esc_html_echo_inline( 'All Types', 'all-types' ) ?></option>
562
- <option value="warn_error">Warnings & Errors</option>
563
- <option value="error">Errors</option>
564
- <option value="warn">Warnings</option>
565
- <option value="info">Info</option>
566
- </select>
567
- <select name="request_type">
568
- <option value="" selected="selected"><?php fs_esc_html_echo_inline( 'All Requests', 'all-requests' ) ?></option>
569
- <option value="call">Sync</option>
570
- <option value="ajax">AJAX</option>
571
- <option value="cron">WP Cron</option>
572
- </select>
573
- <input name="file" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'File' ) ?>"/>
574
- <input name="function" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Function' ) ?>"/>
575
- <input name="process_id" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Process ID' ) ?>"/>
576
- <input name="logger" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Logger' ) ?>"/>
577
- <input name="message" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Message' ) ?>"/>
578
- <div style="margin: 10px 0">
579
- <button id="fs_filter" class="button" style="float: left"><i class="dashicons dashicons-filter"></i> <?php fs_esc_html_echo_inline( 'Filter', 'filter' ) ?>
580
- </button>
581
-
582
- <form action="" method="POST" style="float: left; margin-left: 10px;">
583
- <input type="hidden" name="fs_action" value="download_logs">
584
- <?php wp_nonce_field( 'download_logs' ) ?>
585
- <div class="fs-filters"></div>
586
- <button id="fs_download" class="button" type="submit"><i
587
- class="dashicons dashicons-download"></i> <?php fs_esc_html_echo_inline( 'Download' ) ?></button>
588
- </form>
589
- <div style="clear: both"></div>
590
- </div>
591
- </div>
592
-
593
- <div id="fs_log_book" style="height: 300px; overflow: auto;">
594
- <table class="widefat">
595
- <thead>
596
- <tr>
597
- <th>#</th>
598
- <th><?php fs_esc_html_echo_inline( 'Type' ) ?></th>
599
- <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
600
- <th><?php fs_esc_html_echo_inline( 'Function' ) ?></th>
601
- <th><?php fs_esc_html_echo_inline( 'Message' ) ?></th>
602
- <th><?php fs_esc_html_echo_inline( 'File' ) ?></th>
603
- <th><?php fs_esc_html_echo_inline( 'Timestamp' ) ?></th>
604
- </tr>
605
- </thead>
606
- <tbody>
607
- <tr style="display: none">
608
- <td>{$log.log_order}.</td>
609
- <td class="fs-col--type">{$log.type}</td>
610
- <td class="fs-col--logger">{$log.logger}</td>
611
- <td class="fs-col--function">{$log.function}</td>
612
- <td class="fs-col--message">
613
- <a href="#" onclick="jQuery(this).parent().find('div').toggle(); return false;">
614
- <nobr>{$log.message_short}</nobr>
615
- </a>
616
- <div style="display: none;">{$log.message}</div>
617
- </td>
618
- <td class="fs-col--file">{$log.file}:{$log.line}</td>
619
- <td class="fs-col--timestamp">{$log.created}</td>
620
- </tr>
621
-
622
- </tbody>
623
- </table>
624
- </div>
625
- <script type="text/javascript">
626
- jQuery(document).ready(function ($) {
627
- var filtersChanged = false,
628
- offset = 0,
629
- limit = 200,
630
- prevFiltersSignature = null;
631
-
632
- var getFilters = function () {
633
- var filters = {},
634
- signature = '';
635
-
636
- $('#fs_debug_filters').find('select, input').each(function (i, e) {
637
- var $element = $(e);
638
-
639
- if ('hidden' === $element.attr('type'))
640
- return;
641
-
642
- var val = $element.val();
643
- if ('' !== val.trim()) {
644
- var name = $(e).attr('name');
645
- filters[name] = val;
646
- signature += name + '=' + val + '~';
647
- }
648
- });
649
-
650
- if (signature != prevFiltersSignature) {
651
- filtersChanged = true;
652
- prevFiltersSignature = signature;
653
- } else {
654
- filtersChanged = false;
655
- }
656
-
657
- return filters;
658
- };
659
-
660
- $('#fs_download').parent().submit(function () {
661
- var filters = getFilters(),
662
- hiddenFields = '';
663
-
664
- for (var f in filters) {
665
- if (filters.hasOwnProperty(f)) {
666
- hiddenFields += '<input type="hidden" name="filters[' + f + ']" value="' + filters[f] + '" />';
667
- }
668
- }
669
-
670
- $(this).find('.fs-filters').html(hiddenFields);
671
- });
672
-
673
- var loadLogs = function () {
674
- var $tbody = $('#fs_log_book tbody'),
675
- template = $tbody.find('tr:first-child').html(),
676
- filters = getFilters();
677
-
678
- if (!filtersChanged) {
679
- offset += limit;
680
- } else {
681
- // Cleanup table for new filter (only keep template row).
682
- $tbody.find('tr').each(function (i, e) {
683
- if (0 == i)
684
- return;
685
-
686
- $(e).remove();
687
- });
688
-
689
- offset = 0;
690
- }
691
-
692
- $.post(ajaxurl, {
693
- action : 'fs_get_debug_log',
694
- filters: filters,
695
- offset : offset,
696
- limit : limit
697
- }, function (response) {
698
-
699
- for (var i = 0; i < response.data.length; i++) {
700
- var templateCopy = template;
701
-
702
- response.data[i].message_short = (response.data[i].message.length > 32) ?
703
- response.data[i].message.substr(0, 32) + '...' :
704
- response.data[i].message;
705
-
706
- for (var p in response.data[i]) {
707
- if (response.data[i].hasOwnProperty(p)) {
708
- templateCopy = templateCopy.replace('{$log.' + p + '}', response.data[i][p]);
709
- }
710
- }
711
-
712
- $tbody.append('<tr' + (i % 2 ? ' class="alternate"' : '') + '>' + templateCopy + '</tr>');
713
- }
714
- });
715
- };
716
-
717
- $('#fs_filter').click(function () {
718
- loadLogs();
719
-
720
- return false;
721
- });
722
-
723
- loadLogs();
724
- });
725
- </script>
726
- <?php endif ?>
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
+ * @since 1.1.1
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ global $fs_active_plugins;
14
+
15
+ $fs_options = FS_Options::instance( WP_FS__ACCOUNTS_OPTION_NAME, true );
16
+
17
+ $off_text = fs_text_x_inline( 'Off', 'as turned off' );
18
+ $on_text = fs_text_x_inline( 'On', 'as turned on' );
19
+ ?>
20
+ <h1><?php echo fs_text_inline( 'Freemius Debug' ) . ' - ' . fs_text_inline( 'SDK' ) . ' v.' . $fs_active_plugins->newest->version ?></h1>
21
+ <div>
22
+ <!-- Debugging Switch -->
23
+ <?php //$debug_mode = get_option( 'fs_debug_mode', null ) ?>
24
+ <span class="switch-label"><?php fs_esc_html_echo_x_inline( 'Debugging', 'as code debugging' ) ?></span>
25
+
26
+ <div class="switch <?php echo WP_FS__DEBUG_SDK ? 'off' : 'on' ?>">
27
+ <div class="toggle"></div>
28
+ <span class="on"><?php echo esc_html( $on_text ) ?></span>
29
+ <span class="off"><?php echo esc_html( $off_text ) ?></span>
30
+ </div>
31
+ <script type="text/javascript">
32
+ (function ($) {
33
+ $(document).ready(function () {
34
+ // Switch toggle
35
+ $('.switch').click(function () {
36
+ $(this)
37
+ .toggleClass('on')
38
+ .toggleClass('off');
39
+
40
+ $.post(ajaxurl, {
41
+ action: 'fs_toggle_debug_mode',
42
+ is_on : ($(this).hasClass('off') ? 1 : 0)
43
+ }, function (response) {
44
+ if (1 == response) {
45
+ // Refresh page on success.
46
+ location.reload();
47
+ }
48
+ });
49
+ });
50
+ });
51
+ }(jQuery));
52
+ </script>
53
+ </div>
54
+ <h2><?php fs_esc_html_echo_inline( 'Actions', 'actions' ) ?></h2>
55
+ <table>
56
+ <tbody>
57
+ <tr>
58
+ <td>
59
+ <!-- Delete All Accounts -->
60
+ <form action="" method="POST">
61
+ <input type="hidden" name="fs_action" value="restart_freemius">
62
+ <?php wp_nonce_field( 'restart_freemius' ) ?>
63
+ <button class="button button-primary"
64
+ onclick="if (confirm('<?php fs_esc_attr_echo_inline( 'Are you sure you want to delete all Freemius data?', 'delete-all-confirm' ) ?>')) this.parentNode.submit(); return false;"><?php fs_esc_html_echo_inline( 'Delete All Accounts' ) ?></button>
65
+ </form>
66
+ </td>
67
+ <td>
68
+ <!-- Clear API Cache -->
69
+ <form action="" method="POST">
70
+ <input type="hidden" name="fs_clear_api_cache" value="true">
71
+ <button class="button button-primary"><?php fs_esc_html_echo_inline( 'Clear API Cache' ) ?></button>
72
+ </form>
73
+ </td>
74
+ <td>
75
+ <!-- Clear Updates Transients -->
76
+ <form action="" method="POST">
77
+ <input type="hidden" name="fs_action" value="clear_updates_data">
78
+ <?php wp_nonce_field( 'clear_updates_data' ) ?>
79
+ <button class="button"><?php fs_esc_html_echo_inline( 'Clear Updates Transients' ) ?></button>
80
+ </form>
81
+ </td>
82
+ <td>
83
+ <!-- Sync Data with Server -->
84
+ <form action="" method="POST">
85
+ <input type="hidden" name="background_sync" value="true">
86
+ <button class="button button-primary"><?php fs_esc_html_echo_inline( 'Sync Data From Server' ) ?></button>
87
+ </form>
88
+ </td>
89
+ <?php if ( fs_is_network_admin() && true !== $fs_options->get_option( 'ms_migration_complete', false, true ) ) : ?>
90
+ <td>
91
+ <!-- Migrate Options to Network -->
92
+ <form action="" method="POST">
93
+ <input type="hidden" name="fs_action" value="migrate_options_to_network">
94
+ <?php wp_nonce_field( 'migrate_options_to_network' ) ?>
95
+ <button class="button button-primary"><?php fs_esc_html_echo_inline( 'Migrate Options to Network' ) ?></button>
96
+ </form>
97
+ </td>
98
+ <?php endif ?>
99
+ <td>
100
+ <button id="fs_load_db_option" class="button"><?php fs_esc_html_echo_inline( 'Load DB Option' ) ?></button>
101
+ </td>
102
+ <td>
103
+ <button id="fs_set_db_option" class="button"><?php fs_esc_html_echo_inline( 'Set DB Option' ) ?></button>
104
+ </td>
105
+ </tr>
106
+ </tbody>
107
+ </table>
108
+ <script type="text/javascript">
109
+ (function ($) {
110
+ $('#fs_load_db_option').click(function () {
111
+ var optionName = prompt('Please enter the option name:');
112
+
113
+ if (optionName) {
114
+ $.post(ajaxurl, {
115
+ action : 'fs_get_db_option',
116
+ _wpnonce : '<?php echo wp_create_nonce( 'fs_get_db_option' ) ?>',
117
+ option_name: optionName
118
+ }, function (response) {
119
+ if (response.data.value)
120
+ prompt('The option value is:', response.data.value);
121
+ else
122
+ alert('Oops... Option does not exist in the DB.');
123
+ });
124
+ }
125
+ });
126
+
127
+ $('#fs_set_db_option').click(function () {
128
+ var optionName = prompt('Please enter the option name:');
129
+
130
+ if (optionName) {
131
+ var optionValue = prompt('Please enter the option value:');
132
+
133
+ if (optionValue) {
134
+ $.post(ajaxurl, {
135
+ action : 'fs_set_db_option',
136
+ _wpnonce : '<?php echo wp_create_nonce( 'fs_set_db_option' ) ?>',
137
+ option_name : optionName,
138
+ option_value: optionValue
139
+ }, function () {
140
+ alert('Option was successfully set.');
141
+ });
142
+ }
143
+ }
144
+ });
145
+ })(jQuery);
146
+ </script>
147
+ <?php
148
+ if ( ! defined( 'FS_API__ADDRESS' ) ) {
149
+ define( 'FS_API__ADDRESS', '://api.freemius.com' );
150
+ }
151
+ if ( ! defined( 'FS_API__SANDBOX_ADDRESS' ) ) {
152
+ define( 'FS_API__SANDBOX_ADDRESS', '://sandbox-api.freemius.com' );
153
+ }
154
+
155
+ $defines = array(
156
+ array(
157
+ 'key' => 'WP_FS__REMOTE_ADDR',
158
+ 'val' => WP_FS__REMOTE_ADDR,
159
+ ),
160
+ array(
161
+ 'key' => 'WP_FS__ADDRESS_PRODUCTION',
162
+ 'val' => WP_FS__ADDRESS_PRODUCTION,
163
+ ),
164
+ array(
165
+ 'key' => 'FS_API__ADDRESS',
166
+ 'val' => FS_API__ADDRESS,
167
+ ),
168
+ array(
169
+ 'key' => 'FS_API__SANDBOX_ADDRESS',
170
+ 'val' => FS_API__SANDBOX_ADDRESS,
171
+ ),
172
+ array(
173
+ 'key' => 'WP_FS__DIR',
174
+ 'val' => WP_FS__DIR,
175
+ ),
176
+ )
177
+ ?>
178
+ <br>
179
+ <table class="widefat">
180
+ <thead>
181
+ <tr>
182
+ <th><?php fs_esc_html_echo_inline( 'Key', 'key' ) ?></th>
183
+ <th><?php fs_esc_html_echo_inline( 'Value', 'value' ) ?></th>
184
+ </tr>
185
+ </thead>
186
+ <tbody>
187
+ <?php $alternate = false;
188
+ foreach ( $defines as $p ) : ?>
189
+ <tr<?php if ( $alternate ) {
190
+ echo ' class="alternate"';
191
+ } ?>>
192
+ <td><?php echo $p['key'] ?></td>
193
+ <td><?php echo $p['val'] ?></td>
194
+ </tr>
195
+ <?php $alternate = ! $alternate ?>
196
+ <?php endforeach ?>
197
+ </tbody>
198
+ </table>
199
+ <h2><?php fs_esc_html_echo_x_inline( 'SDK Versions', 'as software development kit versions', 'sdk-versions' ) ?></h2>
200
+ <table id="fs_sdks" class="widefat">
201
+ <thead>
202
+ <tr>
203
+ <th><?php fs_esc_html_echo_x_inline( 'Version', 'product version' ) ?></th>
204
+ <th><?php fs_esc_html_echo_inline( 'SDK Path' ) ?></th>
205
+ <th><?php fs_esc_html_echo_inline( 'Module Path' ) ?></th>
206
+ <th><?php fs_esc_html_echo_inline( 'Is Active' ) ?></th>
207
+ </tr>
208
+ </thead>
209
+ <tbody>
210
+ <?php foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) : ?>
211
+ <?php $is_active = ( WP_FS__SDK_VERSION == $data->version ) ?>
212
+ <tr<?php if ( $is_active ) {
213
+ echo ' style="background: #E6FFE6; font-weight: bold"';
214
+ } ?>>
215
+ <td><?php echo $data->version ?></td>
216
+ <td><?php echo $sdk_path ?></td>
217
+ <td><?php echo $data->plugin_path ?></td>
218
+ <td><?php echo ( $is_active ) ? 'Active' : 'Inactive' ?></td>
219
+ </tr>
220
+ <?php endforeach ?>
221
+ </tbody>
222
+ </table>
223
+
224
+ <?php
225
+ $module_types = array(
226
+ WP_FS__MODULE_TYPE_PLUGIN,
227
+ WP_FS__MODULE_TYPE_THEME
228
+ );
229
+ ?>
230
+
231
+ <?php foreach ( $module_types as $module_type ) : ?>
232
+ <?php $modules = $fs_options->get_option( $module_type . 's' ) ?>
233
+ <?php if ( is_array( $modules ) && count( $modules ) > 0 ) : ?>
234
+ <h2><?php echo esc_html( ( WP_FS__MODULE_TYPE_PLUGIN == $module_type ) ? fs_text_inline( 'Plugins', 'plugins' ) : fs_text_inline( 'Themes', 'themes' ) ) ?></h2>
235
+ <table id="fs_<?php echo $module_type ?>" class="widefat">
236
+ <thead>
237
+ <tr>
238
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
239
+ <th><?php fs_esc_html_echo_inline( 'Slug' ) ?></th>
240
+ <th><?php fs_esc_html_echo_x_inline( 'Version', 'product version' ) ?></th>
241
+ <th><?php fs_esc_html_echo_inline( 'Title' ) ?></th>
242
+ <th><?php fs_esc_html_echo_x_inline( 'API', 'as application program interface' ) ?></th>
243
+ <th><?php fs_esc_html_echo_inline( 'Freemius State' ) ?></th>
244
+ <th><?php fs_esc_html_echo_inline( 'Module Path' ) ?></th>
245
+ <th><?php fs_esc_html_echo_inline( 'Public Key' ) ?></th>
246
+ <?php if ( is_multisite() ) : ?>
247
+ <th><?php fs_esc_html_echo_inline( 'Network Blog' ) ?></th>
248
+ <th><?php fs_esc_html_echo_inline( 'Network User' ) ?></th>
249
+ <?php endif ?>
250
+ <th><?php fs_esc_html_echo_inline( 'Actions' ) ?></th>
251
+ </tr>
252
+ </thead>
253
+ <tbody>
254
+ <?php foreach ( $modules as $slug => $data ) : ?>
255
+ <?php
256
+ if ( WP_FS__MODULE_TYPE_THEME !== $module_type ) {
257
+ $is_active = is_plugin_active( $data->file );
258
+ } else {
259
+ $current_theme = wp_get_theme();
260
+ $is_active = ( $current_theme->stylesheet === $data->file );
261
+
262
+ if ( ! $is_active && is_child_theme() ) {
263
+ $parent_theme = $current_theme->parent();
264
+
265
+ $is_active = ( ( $parent_theme instanceof WP_Theme ) && $parent_theme->stylesheet === $data->file );
266
+ }
267
+ }
268
+ ?>
269
+ <?php $fs = $is_active ? freemius( $data->id ) : null ?>
270
+ <tr<?php if ( $is_active ) {
271
+ if ( $fs->has_api_connectivity() && $fs->is_on() ) {
272
+ echo ' style="background: #E6FFE6; font-weight: bold"';
273
+ } else {
274
+ echo ' style="background: #ffd0d0; font-weight: bold"';
275
+ }
276
+ } ?>>
277
+ <td><?php echo $data->id ?></td>
278
+ <td><?php echo $slug ?></td>
279
+ <td><?php echo $data->version ?></td>
280
+ <td><?php echo $data->title ?></td>
281
+ <td<?php if ( $is_active && ! $fs->has_api_connectivity() ) {
282
+ echo ' style="color: red; text-transform: uppercase;"';
283
+ } ?>><?php if ( $is_active ) {
284
+ echo esc_html( $fs->has_api_connectivity() ?
285
+ fs_text_x_inline( 'Connected', 'as connection was successful' ) :
286
+ fs_text_x_inline( 'Blocked', 'as connection blocked' )
287
+ );
288
+ } ?></td>
289
+ <td<?php if ( $is_active && ! $fs->is_on() ) {
290
+ echo ' style="color: red; text-transform: uppercase;"';
291
+ } ?>><?php if ( $is_active ) {
292
+ echo esc_html( $fs->is_on() ?
293
+ $on_text :
294
+ $off_text
295
+ );
296
+ } ?></td>
297
+ <td><?php echo $data->file ?></td>
298
+ <td><?php echo $data->public_key ?></td>
299
+ <?php if ( is_multisite() ) : ?>
300
+ <?php
301
+ $network_blog_id = null;
302
+ $network_user = null;
303
+
304
+ if ( is_object( $fs ) ) {
305
+ $network_blog_id = $fs->get_network_install_blog_id();
306
+ $network_user = $fs->get_network_user();
307
+ }
308
+ ?>
309
+ <td><?php echo is_numeric( $network_blog_id ) ? $network_blog_id : '' ?></td>
310
+ <td><?php if ( is_object( $network_user ) ) {
311
+ echo $network_user->email;
312
+ } ?></td>
313
+ <?php endif ?>
314
+ <td>
315
+ <?php if ( $is_active ) : ?>
316
+ <?php if ( $fs->has_trial_plan() ) : ?>
317
+ <form action="" method="POST">
318
+ <input type="hidden" name="fs_action" value="simulate_trial">
319
+ <input type="hidden" name="module_id" value="<?php echo $fs->get_id() ?>">
320
+ <?php wp_nonce_field( 'simulate_trial' ) ?>
321
+
322
+ <button type="submit" class="button button-primary simulate-trial"><?php fs_esc_html_echo_inline( 'Simulate Trial Promotion' ) ?></button>
323
+ </form>
324
+ <?php endif ?>
325
+ <?php if ( $fs->is_registered() ) : ?>
326
+ <a class="button" href="<?php echo $fs->get_account_url() ?>"><?php fs_esc_html_echo_inline( 'Account', 'account' ) ?></a>
327
+ <?php endif ?>
328
+ <?php if ( fs_is_network_admin() && ! $fs->is_network_upgrade_mode() ) : ?>
329
+ <form action="" method="POST">
330
+ <input type="hidden" name="fs_action" value="simulate_network_upgrade">
331
+ <input type="hidden" name="module_id" value="<?php echo $fs->get_id() ?>">
332
+ <?php wp_nonce_field( 'simulate_network_upgrade' ) ?>
333
+
334
+ <button type="submit" class="button button-small"><?php fs_esc_html_echo_inline( 'Simulate Network Upgrade' ) ?></button>
335
+ </form>
336
+ <?php endif ?>
337
+ <?php endif ?>
338
+ </td>
339
+ </tr>
340
+ <?php endforeach ?>
341
+ </tbody>
342
+ </table>
343
+ <?php endif ?>
344
+ <?php endforeach ?>
345
+ <?php foreach ( $module_types as $module_type ) : ?>
346
+ <?php
347
+ /**
348
+ * @var array $VARS
349
+ * @var array[string]FS_Site|array[string]FS_Site[] $sites_map
350
+ */
351
+ $sites_map = $VARS[ $module_type . '_sites' ];
352
+
353
+ $is_multisite = is_multisite();
354
+ $all_plans = false;
355
+ $plans = false;
356
+ ?>
357
+ <?php if ( is_array( $sites_map ) && count( $sites_map ) > 0 ) : ?>
358
+ <h2><?php echo esc_html( sprintf(
359
+ /* translators: %s: 'plugin' or 'theme' */
360
+ fs_text_inline( '%s Installs', 'module-installs' ),
361
+ ( WP_FS__MODULE_TYPE_PLUGIN === $module_type ? fs_text_inline( 'Plugin', 'plugin' ) : fs_text_inline( 'Theme', 'theme' ) )
362
+ ) ) ?> / <?php fs_esc_html_echo_x_inline( 'Sites', 'like websites', 'sites' ) ?></h2>
363
+ <table id="fs_<?php echo $module_type ?>_installs" class="widefat">
364
+ <thead>
365
+ <tr>
366
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
367
+ <?php if ( $is_multisite ) : ?>
368
+ <th><?php fs_esc_html_echo_inline( 'Blog ID' ) ?></th>
369
+ <th><?php fs_esc_html_echo_inline( 'Address' ) ?></th>
370
+ <?php endif ?>
371
+ <th><?php fs_esc_html_echo_inline( 'Slug' ) ?></th>
372
+ <th><?php fs_esc_html_echo_inline( 'User ID' ) ?></th>
373
+ <th><?php fs_esc_html_echo_x_inline( 'Plan', 'as product pricing plan', 'plan' ) ?></th>
374
+ <th><?php fs_esc_html_echo_inline( 'Public Key' ) ?></th>
375
+ <th><?php fs_esc_html_echo_inline( 'Secret Key' ) ?></th>
376
+ <th><?php fs_esc_html_echo_inline( 'Actions' ) ?></th>
377
+ </tr>
378
+ </thead>
379
+ <tbody>
380
+ <?php foreach ( $sites_map as $slug => $sites ) : ?>
381
+ <?php if ( ! is_array( $sites ) ) {
382
+ $sites = array( $sites );
383
+ } ?>
384
+ <?php foreach ( $sites as $site ) : ?>
385
+ <tr>
386
+ <td><?php echo $site->id ?></td>
387
+ <?php if ( $is_multisite ) : ?>
388
+ <td><?php echo $site->blog_id ?></td>
389
+ <td><?php echo fs_strip_url_protocol( $site->url ) ?></td>
390
+ <?php endif ?>
391
+ <td><?php echo $slug ?></td>
392
+ <td><?php echo $site->user_id ?></td>
393
+ <td><?php
394
+ $plan_name = '';
395
+ if ( FS_Plugin_Plan::is_valid_id( $site->plan_id ) ) {
396
+ if ( false === $all_plans ) {
397
+ $option_name = 'plans';
398
+ if ( WP_FS__MODULE_TYPE_PLUGIN !== $module_type ) {
399
+ $option_name = $module_type . '_' . $option_name;
400
+ }
401
+
402
+ $all_plans = $fs_options->get_option( $option_name, array() );
403
+ }
404
+
405
+ if ( false === $plans ) {
406
+ $plans = $all_plans[ $slug ];
407
+ }
408
+
409
+ foreach ( $plans as $plan ) {
410
+ $plan_id = Freemius::_decrypt( $plan->id );
411
+
412
+ if ( $site->plan_id == $plan_id ) {
413
+ $plan_name = Freemius::_decrypt( $plan->name );
414
+ break;
415
+ }
416
+ }
417
+ }
418
+
419
+ echo $plan_name;
420
+ ?></td>
421
+ <td><?php echo $site->public_key ?></td>
422
+ <td><?php echo esc_html( $site->secret_key ) ?></td>
423
+ <td>
424
+ <form action="" method="POST">
425
+ <input type="hidden" name="fs_action" value="delete_install">
426
+ <?php wp_nonce_field( 'delete_install' ) ?>
427
+ <input type="hidden" name="module_id" value="<?php echo $site->plugin_id ?>">
428
+ <?php if ( $is_multisite ) : ?>
429
+ <input type="hidden" name="blog_id" value="<?php echo $site->blog_id ?>">
430
+ <?php endif ?>
431
+ <input type="hidden" name="module_type" value="<?php echo $module_type ?>">
432
+ <input type="hidden" name="slug" value="<?php echo $slug ?>">
433
+ <button type="submit" class="button"><?php fs_esc_html_echo_x_inline( 'Delete', 'verb', 'delete' ) ?></button>
434
+ </form>
435
+ </td>
436
+ </tr>
437
+ <?php endforeach ?>
438
+ <?php endforeach ?>
439
+ </tbody>
440
+ </table>
441
+ <?php endif ?>
442
+ <?php endforeach ?>
443
+ <?php
444
+ $addons = $VARS['addons'];
445
+ ?>
446
+ <?php foreach ( $addons as $plugin_id => $plugin_addons ) : ?>
447
+ <h2><?php echo esc_html( sprintf( fs_text_inline( 'Add Ons of module %s', 'addons-of-x' ), $plugin_id ) ) ?></h2>
448
+ <table id="fs_addons" class="widefat">
449
+ <thead>
450
+ <tr>
451
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
452
+ <th><?php fs_esc_html_echo_inline( 'Title' ) ?></th>
453
+ <th><?php fs_esc_html_echo_inline( 'Slug' ) ?></th>
454
+ <th><?php fs_esc_html_echo_x_inline( 'Version', 'product version' ) ?></th>
455
+ <th><?php fs_esc_html_echo_inline( 'Public Key' ) ?></th>
456
+ <th><?php fs_esc_html_echo_inline( 'Secret Key' ) ?></th>
457
+ </tr>
458
+ </thead>
459
+ <tbody>
460
+ <?php
461
+ /**
462
+ * @var FS_Plugin[] $plugin_addons
463
+ */
464
+ foreach ( $plugin_addons as $addon ) : ?>
465
+ <tr>
466
+ <td><?php echo $addon->id ?></td>
467
+ <td><?php echo $addon->title ?></td>
468
+ <td><?php echo $addon->slug ?></td>
469
+ <td><?php echo $addon->version ?></td>
470
+ <td><?php echo $addon->public_key ?></td>
471
+ <td><?php echo esc_html( $addon->secret_key ) ?></td>
472
+ </tr>
473
+ <?php endforeach ?>
474
+ </tbody>
475
+ </table>
476
+ <?php endforeach ?>
477
+ <?php
478
+ /**
479
+ * @var FS_User[] $users
480
+ */
481
+ $users = $VARS['users'];
482
+ ?>
483
+ <?php if ( is_array( $users ) && 0 < count( $users ) ) : ?>
484
+ <h2><?php fs_esc_html_echo_inline( 'Users' ) ?></h2>
485
+ <table id="fs_users" class="widefat">
486
+ <thead>
487
+ <tr>
488
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
489
+ <th><?php fs_esc_html_echo_inline( 'Name' ) ?></th>
490
+ <th><?php fs_esc_html_echo_inline( 'Email' ) ?></th>
491
+ <th><?php fs_esc_html_echo_inline( 'Verified' ) ?></th>
492
+ <th><?php fs_esc_html_echo_inline( 'Public Key' ) ?></th>
493
+ <th><?php fs_esc_html_echo_inline( 'Secret Key' ) ?></th>
494
+ <th><?php fs_esc_html_echo_inline( 'Actions' ) ?></th>
495
+ </tr>
496
+ </thead>
497
+ <tbody>
498
+ <?php foreach ( $users as $user_id => $user ) : ?>
499
+ <tr>
500
+ <td><?php echo $user->id ?></td>
501
+ <td><?php echo $user->get_name() ?></td>
502
+ <td><a href="mailto:<?php echo esc_attr( $user->email ) ?>"><?php echo $user->email ?></a></td>
503
+ <td><?php echo json_encode( $user->is_verified ) ?></td>
504
+ <td><?php echo $user->public_key ?></td>
505
+ <td><?php echo esc_html( $user->secret_key ) ?></td>
506
+ <td>
507
+ <form action="" method="POST">
508
+ <input type="hidden" name="fs_action" value="delete_user">
509
+ <?php wp_nonce_field( 'delete_user' ) ?>
510
+ <input type="hidden" name="user_id" value="<?php echo $user->id ?>">
511
+ <button type="submit" class="button"><?php fs_esc_html_echo_x_inline( 'Delete', 'verb', 'delete' ) ?></button>
512
+ </form>
513
+ </td>
514
+ </tr>
515
+ <?php endforeach ?>
516
+ </tbody>
517
+ </table>
518
+ <?php endif ?>
519
+ <?php foreach ( $module_types as $module_type ) : ?>
520
+ <?php $licenses = $VARS[ $module_type . '_licenses' ] ?>
521
+ <?php if ( is_array( $licenses ) && count( $licenses ) > 0 ) : ?>
522
+ <h2><?php echo esc_html( sprintf( fs_text_inline( '%s Licenses', 'module-licenses' ), ( WP_FS__MODULE_TYPE_PLUGIN === $module_type ? fs_text_inline( 'Plugin', 'plugin' ) : fs_text_inline( 'Theme', 'theme' ) ) ) ) ?></h2>
523
+ <table id="fs_<?php echo $module_type ?>_licenses" class="widefat">
524
+ <thead>
525
+ <tr>
526
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
527
+ <th><?php fs_esc_html_echo_inline( 'Plugin ID' ) ?></th>
528
+ <th><?php fs_esc_html_echo_inline( 'User ID' ) ?></th>
529
+ <th><?php fs_esc_html_echo_inline( 'Plan ID' ) ?></th>
530
+ <th><?php fs_esc_html_echo_inline( 'Quota' ) ?></th>
531
+ <th><?php fs_esc_html_echo_inline( 'Activated' ) ?></th>
532
+ <th><?php fs_esc_html_echo_inline( 'Blocking' ) ?></th>
533
+ <th><?php fs_esc_html_echo_inline( 'License Key' ) ?></th>
534
+ <th><?php fs_esc_html_echo_x_inline( 'Expiration', 'as expiration date' ) ?></th>
535
+ </tr>
536
+ </thead>
537
+ <tbody>
538
+ <?php foreach ( $licenses as $license ) : ?>
539
+ <tr>
540
+ <td><?php echo $license->id ?></td>
541
+ <td><?php echo $license->plugin_id ?></td>
542
+ <td><?php echo $license->user_id ?></td>
543
+ <td><?php echo $license->plan_id ?></td>
544
+ <td><?php echo $license->is_unlimited() ? 'Unlimited' : ( $license->is_single_site() ? 'Single Site' : $license->quota ) ?></td>
545
+ <td><?php echo $license->activated ?></td>
546
+ <td><?php echo $license->is_block_features ? 'Blocking' : 'Flexible' ?></td>
547
+ <td><?php echo esc_html( $license->secret_key ) ?></td>
548
+ <td><?php echo $license->expiration ?></td>
549
+ </tr>
550
+ <?php endforeach ?>
551
+ </tbody>
552
+ </table>
553
+ <?php endif ?>
554
+ <?php endforeach ?>
555
+ <?php if ( FS_Logger::is_storage_logging_on() ) : ?>
556
+
557
+ <h2><?php fs_esc_html_echo_inline( 'Debug Log', 'debug-log' ) ?></h2>
558
+
559
+ <div id="fs_debug_filters">
560
+ <select name="type">
561
+ <option value="" selected="selected"><?php fs_esc_html_echo_inline( 'All Types', 'all-types' ) ?></option>
562
+ <option value="warn_error">Warnings & Errors</option>
563
+ <option value="error">Errors</option>
564
+ <option value="warn">Warnings</option>
565
+ <option value="info">Info</option>
566
+ </select>
567
+ <select name="request_type">
568
+ <option value="" selected="selected"><?php fs_esc_html_echo_inline( 'All Requests', 'all-requests' ) ?></option>
569
+ <option value="call">Sync</option>
570
+ <option value="ajax">AJAX</option>
571
+ <option value="cron">WP Cron</option>
572
+ </select>
573
+ <input name="file" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'File' ) ?>"/>
574
+ <input name="function" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Function' ) ?>"/>
575
+ <input name="process_id" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Process ID' ) ?>"/>
576
+ <input name="logger" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Logger' ) ?>"/>
577
+ <input name="message" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Message' ) ?>"/>
578
+ <div style="margin: 10px 0">
579
+ <button id="fs_filter" class="button" style="float: left"><i class="dashicons dashicons-filter"></i> <?php fs_esc_html_echo_inline( 'Filter', 'filter' ) ?>
580
+ </button>
581
+
582
+ <form action="" method="POST" style="float: left; margin-left: 10px;">
583
+ <input type="hidden" name="fs_action" value="download_logs">
584
+ <?php wp_nonce_field( 'download_logs' ) ?>
585
+ <div class="fs-filters"></div>
586
+ <button id="fs_download" class="button" type="submit"><i
587
+ class="dashicons dashicons-download"></i> <?php fs_esc_html_echo_inline( 'Download' ) ?></button>
588
+ </form>
589
+ <div style="clear: both"></div>
590
+ </div>
591
+ </div>
592
+
593
+ <div id="fs_log_book" style="height: 300px; overflow: auto;">
594
+ <table class="widefat">
595
+ <thead>
596
+ <tr>
597
+ <th>#</th>
598
+ <th><?php fs_esc_html_echo_inline( 'Type' ) ?></th>
599
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
600
+ <th><?php fs_esc_html_echo_inline( 'Function' ) ?></th>
601
+ <th><?php fs_esc_html_echo_inline( 'Message' ) ?></th>
602
+ <th><?php fs_esc_html_echo_inline( 'File' ) ?></th>
603
+ <th><?php fs_esc_html_echo_inline( 'Timestamp' ) ?></th>
604
+ </tr>
605
+ </thead>
606
+ <tbody>
607
+ <tr style="display: none">
608
+ <td>{$log.log_order}.</td>
609
+ <td class="fs-col--type">{$log.type}</td>
610
+ <td class="fs-col--logger">{$log.logger}</td>
611
+ <td class="fs-col--function">{$log.function}</td>
612
+ <td class="fs-col--message">
613
+ <a href="#" onclick="jQuery(this).parent().find('div').toggle(); return false;">
614
+ <nobr>{$log.message_short}</nobr>
615
+ </a>
616
+ <div style="display: none;">{$log.message}</div>
617
+ </td>
618
+ <td class="fs-col--file">{$log.file}:{$log.line}</td>
619
+ <td class="fs-col--timestamp">{$log.created}</td>
620
+ </tr>
621
+
622
+ </tbody>
623
+ </table>
624
+ </div>
625
+ <script type="text/javascript">
626
+ jQuery(document).ready(function ($) {
627
+ var filtersChanged = false,
628
+ offset = 0,
629
+ limit = 200,
630
+ prevFiltersSignature = null;
631
+
632
+ var getFilters = function () {
633
+ var filters = {},
634
+ signature = '';
635
+
636
+ $('#fs_debug_filters').find('select, input').each(function (i, e) {
637
+ var $element = $(e);
638
+
639
+ if ('hidden' === $element.attr('type'))
640
+ return;
641
+
642
+ var val = $element.val();
643
+ if ('' !== val.trim()) {
644
+ var name = $(e).attr('name');
645
+ filters[name] = val;
646
+ signature += name + '=' + val + '~';
647
+ }
648
+ });
649
+
650
+ if (signature != prevFiltersSignature) {
651
+ filtersChanged = true;
652
+ prevFiltersSignature = signature;
653
+ } else {
654
+ filtersChanged = false;
655
+ }
656
+
657
+ return filters;
658
+ };
659
+
660
+ $('#fs_download').parent().submit(function () {
661
+ var filters = getFilters(),
662
+ hiddenFields = '';
663
+
664
+ for (var f in filters) {
665
+ if (filters.hasOwnProperty(f)) {
666
+ hiddenFields += '<input type="hidden" name="filters[' + f + ']" value="' + filters[f] + '" />';
667
+ }
668
+ }
669
+
670
+ $(this).find('.fs-filters').html(hiddenFields);
671
+ });
672
+
673
+ var loadLogs = function () {
674
+ var $tbody = $('#fs_log_book tbody'),
675
+ template = $tbody.find('tr:first-child').html(),
676
+ filters = getFilters();
677
+
678
+ if (!filtersChanged) {
679
+ offset += limit;
680
+ } else {
681
+ // Cleanup table for new filter (only keep template row).
682
+ $tbody.find('tr').each(function (i, e) {
683
+ if (0 == i)
684
+ return;
685
+
686
+ $(e).remove();
687
+ });
688
+
689
+ offset = 0;
690
+ }
691
+
692
+ $.post(ajaxurl, {
693
+ action : 'fs_get_debug_log',
694
+ filters: filters,
695
+ offset : offset,
696
+ limit : limit
697
+ }, function (response) {
698
+
699
+ for (var i = 0; i < response.data.length; i++) {
700
+ var templateCopy = template;
701
+
702
+ response.data[i].message_short = (response.data[i].message.length > 32) ?
703
+ response.data[i].message.substr(0, 32) + '...' :
704
+ response.data[i].message;
705
+
706
+ for (var p in response.data[i]) {
707
+ if (response.data[i].hasOwnProperty(p)) {
708
+ templateCopy = templateCopy.replace('{$log.' + p + '}', response.data[i][p]);
709
+ }
710
+ }
711
+
712
+ $tbody.append('<tr' + (i % 2 ? ' class="alternate"' : '') + '>' + templateCopy + '</tr>');
713
+ }
714
+ });
715
+ };
716
+
717
+ $('#fs_filter').click(function () {
718
+ loadLogs();
719
+
720
+ return false;
721
+ });
722
+
723
+ loadLogs();
724
+ });
725
+ </script>
726
+ <?php endif ?>
gutenberg/class-foogallery-blocks.php CHANGED
@@ -12,9 +12,6 @@ if ( ! class_exists( 'FooGallery_Blocks' ) ) {
12
  class FooGallery_Blocks {
13
 
14
  function __construct() {
15
- //Frontend block assets.
16
- add_action( 'enqueue_block_assets', array( $this, 'enqueue_block_assets' ) );
17
-
18
  //Backend editor block assets.
19
  add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_block_editor_assets' ) );
20
 
@@ -113,26 +110,6 @@ if ( ! class_exists( 'FooGallery_Blocks' ) ) {
113
  return apply_filters( 'foogallery_gutenberg_edit_gallery_url', $link );
114
  }
115
 
116
- /**
117
- * Enqueue Gutenberg block assets for both frontend + backend.
118
- *
119
- * `wp-blocks`: includes block type registration and related functions.
120
- *
121
- * @since 1.0.0
122
- */
123
- function enqueue_block_assets() {
124
- if ( !apply_filters( 'foogallery_gutenberg_enabled', true ) ) {
125
- return;
126
- }
127
-
128
- // Styles.
129
- wp_enqueue_style(
130
- 'foogallery-block-css',
131
- plugins_url( 'gutenberg/dist/blocks.style.build.css', dirname( __FILE__ ) ),
132
- array( 'wp-blocks' )
133
- );
134
- }
135
-
136
  /**
137
  * Register our block and shortcode.
138
  */
12
  class FooGallery_Blocks {
13
 
14
  function __construct() {
 
 
 
15
  //Backend editor block assets.
16
  add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_block_editor_assets' ) );
17
 
110
  return apply_filters( 'foogallery_gutenberg_edit_gallery_url', $link );
111
  }
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  /**
114
  * Register our block and shortcode.
115
  */
gutenberg/dist/blocks.build.js CHANGED
@@ -1 +1 @@
1
- !function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=3)}([function(e,t,n){"use strict";var r=n(11);n.d(t,"c",function(){return r.a});var o=n(17);n.d(t,"a",function(){return o.a});var a=n(18);n.d(t,"b",function(){return a.a});var i=n(2);n.d(t,"d",function(){return i.a});var l=n(20);n.d(t,"e",function(){return l.a})},function(e,t,n){var r,o;!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var i=n.apply(null,r);i&&e.push(i)}else if("object"===o)for(var l in r)a.call(r,l)&&r[l]&&e.push(l)}}return e.join(" ")}var a={}.hasOwnProperty;"undefined"!==typeof e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";function r(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function i(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l=n(1),c=n.n(l),u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),f=(wp.i18n.__,wp.element.Component),p=wp.components.Placeholder,y=function(e){function t(){return o(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return i(t,e),s(t,[{key:"render",value:function(){var e=this.props,t=e.className,n=e.children,o=r(e,["className","children"]);return wp.element.createElement(p,u({className:c()("editor-media-placeholder",t)},o),n)}}]),t}(f);t.a=y},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(4)},function(e,t,n){"use strict";var r=n(5),o=(n.n(r),n(6)),a=(n.n(o),n(7)),i=wp.i18n.__;(0,wp.blocks.registerBlockType)("fooplugins/foogallery",{title:i("FooGallery"),description:i("Insert a FooGallery into your content"),icon:"format-gallery",category:"common",keywords:[i("foogallery"),i("gallery")],supports:{multiple:!0,html:!1},attributes:{id:{type:"number",default:0}},edit:function(e){return wp.element.createElement(a.a,e)},save:function(){return null}})},function(e,t){},function(e,t){},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function a(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=n(8),l=n(9),c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=wp.i18n.sprintf,f=wp.data.dispatch,p=wp.element.Component,y=function(e){function t(){r(this,t);var e=o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.state={isModalOpen:!1,reload:!1},e.showModal=e.showModal.bind(e),e.closeModal=e.closeModal.bind(e),e.insertGallery=e.insertGallery.bind(e),e.editGallery=e.editGallery.bind(e),e.reloadGallery=e.reloadGallery.bind(e),e.removeBlock=e.removeBlock.bind(e),e}return a(t,e),u(t,[{key:"componentDidMount",value:function(){var e=this.props,t=e.clientId,n=e.attributes.id;0!=n&&i.a.add(n,t)}},{key:"componentWillUnmount",value:function(){var e=this.props,t=e.clientId;0!=e.attributes.id&&i.a.remove(t)}},{key:"showModal",value:function(){this.setState({isModalOpen:!0})}},{key:"closeModal",value:function(){this.setState({isModalOpen:!1})}},{key:"insertGallery",value:function(e){var t=this.props,n=t.clientId,r=t.setAttributes;i.a.update(e,n),r({id:e})}},{key:"editGallery",value:function(){var e=this.props.attributes.id,t=s("/wp-admin/post.php?post=%s&action=edit",e);window.open(t,"_blank")}},{key:"reloadGallery",value:function(){var e=this.state.reload;this.setState({reload:!e})}},{key:"removeBlock",value:function(){var e=this.props.clientId;f("core/editor").removeBlock(e)}},{key:"render",value:function(){var e=this.props,t=e.attributes,n=e.clientId,r=this.state,o=r.isModalOpen,a=r.reload,u={disable:i.a.ids(),isModalOpen:o,onRequestModalOpen:this.showModal,onRequestModalClose:this.closeModal,onRequestBlockRemove:this.removeBlock,onRequestGalleryInsert:this.insertGallery,onRequestGalleryEdit:this.editGallery,onRequestGalleryReload:this.reloadGallery};return i.a.contains(t.id,n)?wp.element.createElement(l.a,u):t.id?wp.element.createElement(l.c,c({attributes:t,reload:a},u)):wp.element.createElement(l.b,u)}}]),t}(p);t.a=y,y.defaultProps={}},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=[],i=function(){function e(){r(this,e)}return o(e,null,[{key:"add",value:function(e,t){return-1===a.findIndex(function(t){return t.id==e})&&(a.push({id:e,clientId:t}),!0)}},{key:"remove",value:function(e){var t=a.findIndex(function(t){return t.clientId==e});return-1!==t?(a.splice(t,1),!0):-1===t||!1}},{key:"update",value:function(e,t){return!!this.remove(t)&&this.add(e,t)}},{key:"ids",value:function(){return a.map(function(e){return e.id})}},{key:"contains",value:function(e,t){return-1!==a.findIndex(function(n){return n.id==e&&n.clientId!=t})}},{key:"array",get:function(){return a}}]),e}();t.a=i},function(e,t,n){"use strict";var r=n(10);n.d(t,"b",function(){return r.a});var o=n(21);n.d(t,"a",function(){return o.a});var a=n(22);n.d(t,"c",function(){return a.a})},function(e,t,n){"use strict";function r(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function i(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l=n(0),c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=wp.i18n.__,s=wp.element,f=s.Component,p=s.Fragment,y=wp.components.Button,d=function(e){function t(){return o(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return i(t,e),c(t,[{key:"render",value:function(){var e=this.props,t=e.icon,n=e.label,o=e.instructions,a=e.button,i=r(e,["icon","label","instructions","button"]),c={icon:t,label:n,instructions:o};return wp.element.createElement(p,null,wp.element.createElement(l.a,i),wp.element.createElement(l.d,c,wp.element.createElement(y,{isDefault:!0,isLarge:!0,onClick:i.onRequestModalOpen},a)),wp.element.createElement(l.c,i),wp.element.createElement(l.b,i))}}]),t}(f);t.a=d,d.defaultProps={icon:"format-gallery",label:u("FooGallery","foogallery"),instructions:u("Select the gallery you want to insert.","foogallery"),button:u("Select Gallery","foogallery"),onRequestModalOpen:_.noop}},function(e,t,n){"use strict";function r(e){return function(){var t=e.apply(this,arguments);return new Promise(function(e,n){function r(o,a){try{var i=t[o](a),l=i.value}catch(e){return void n(e)}if(!i.done)return Promise.resolve(l).then(function(e){r("next",e)},function(e){r("throw",e)});e(l)}return r("next")})}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function i(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l=n(12),c=n.n(l),u=n(15),s=(n.n(u),n(1)),f=n.n(s),p=n(16),y=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),d=wp.i18n.__,h=wp.element.Component,m=wp.components,b=m.Button,v=m.IconButton,w=m.Placeholder,g=m.Modal,O=m.Spinner,E=function(e){function t(){o(this,t);var e=a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.state={id:e.props.currentId,data:null,isLoading:!1},e.onReloadClick=e.onReloadClick.bind(e),e.onInsertClick=e.onInsertClick.bind(e),e}return i(t,e),y(t,[{key:"fetchGalleries",value:function(){function e(){return t.apply(this,arguments)}var t=r(c.a.mark(function e(){var t;return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this.setState({isLoading:!0}),e.next=3,wp.apiFetch({path:"/foogallery/v1/galleries/"});case 3:t=e.sent,this.setState({data:t,isLoading:!1});case 5:case"end":return e.stop()}},e,this)}));return e}()},{key:"onReloadClick",value:function(e){e.stopPropagation(),this.setState({data:null})}},{key:"onInsertClick",value:function(e){e.stopPropagation();var t=this.props,n=t.onRequestModalClose,r=t.onRequestGalleryInsert,o=this.state.id;0!=o&&(r(o),n())}},{key:"render",value:function(){var e=this.props,t=e.isModalOpen,n=e.className,r=e.title,o=e.insert,a=e.reload,i=e.onRequestModalClose;if(!t)return null;var l=this.state,c=l.id,u=l.isLoading;return wp.element.createElement(g,{className:f()("foogallery-modal",n),title:r,onRequestClose:i},wp.element.createElement("div",{className:"foogallery-modal__content"},wp.element.createElement("div",{className:"foogallery-modal__content-container"},this.renderContent())),wp.element.createElement("div",{className:"foogallery-modal__footer"},wp.element.createElement("div",{className:"foogallery-modal__footer-container"},wp.element.createElement(v,{isDefault:!0,icon:"update",label:a,onClick:this.onReloadClick,disabled:u}),"\xa0",wp.element.createElement(b,{isPrimary:!0,onClick:this.onInsertClick,disabled:0==c},o))))}},{key:"renderContent",value:function(){var e=this.props,t=e.disable,n=e.empty,r=e.loading,o=this.state,a=o.id,i=o.data,l=o.isLoading;if(null===i&&!l)return this.fetchGalleries(),null;if(l)return wp.element.createElement(w,{className:"foogallery-modal__content-placeholder",instructions:r},wp.element.createElement(O,null));if(null===i||!i.length)return wp.element.createElement(w,{className:"foogallery-modal__content-placeholder",instructions:n});var c=this;return i.map(function(e){return wp.element.createElement(p.a,{data:e,isSelected:a==e.id,isDisabled:-1!==t.indexOf(e.id),onSelected:function(e){c.setState({id:e})}})})}}]),t}(h);t.a=E,E.defaultProps={currentId:0,isModalOpen:!1,className:"",title:d("Select the gallery you want to insert"),empty:d("No galleries found!"),insert:d("Insert Gallery"),reload:d("Reload Galleries"),loading:d("Loading galleries please wait..."),disable:[],onRequestGalleryInsert:_.noop,onRequestModalClose:_.noop}},function(e,t,n){e.exports=n(13)},function(e,t,n){var r=function(){return this}()||Function("return this")(),o=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,a=o&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,e.exports=n(14),o)r.regeneratorRuntime=a;else try{delete r.regeneratorRuntime}catch(e){r.regeneratorRuntime=void 0}},function(e,t){!function(t){"use strict";function n(e,t,n,r){var a=t&&t.prototype instanceof o?t:o,i=Object.create(a.prototype),l=new y(r||[]);return i._invoke=u(e,n,l),i}function r(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function o(){}function a(){}function i(){}function l(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function c(e){function t(n,o,a,i){var l=r(e[n],e,o);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"===typeof u&&v.call(u,"__await")?Promise.resolve(u.__await).then(function(e){t("next",e,a,i)},function(e){t("throw",e,a,i)}):Promise.resolve(u).then(function(e){c.value=e,a(c)},i)}i(l.arg)}function n(e,n){function r(){return new Promise(function(r,o){t(e,n,r,o)})}return o=o?o.then(r,r):r()}var o;this._invoke=n}function u(e,t,n){var o=k;return function(a,i){if(o===R)throw new Error("Generator is already running");if(o===x){if("throw"===a)throw i;return h()}for(n.method=a,n.arg=i;;){var l=n.delegate;if(l){var c=s(l,n);if(c){if(c===C)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===k)throw o=x,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=R;var u=r(e,t,n);if("normal"===u.type){if(o=n.done?x:P,u.arg===C)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=x,n.method="throw",n.arg=u.arg)}}}function s(e,t){var n=e.iterator[t.method];if(n===m){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=m,s(e,t),"throw"===t.method))return C;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return C}var o=r(n,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,C;var a=o.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=m),t.delegate=null,C):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,C)}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function p(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function y(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function d(e){if(e){var t=e[g];if(t)return t.call(e);if("function"===typeof e.next)return e;if(!isNaN(e.length)){var n=-1,r=function t(){for(;++n<e.length;)if(v.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=m,t.done=!0,t};return r.next=r}}return{next:h}}function h(){return{value:m,done:!0}}var m,b=Object.prototype,v=b.hasOwnProperty,w="function"===typeof Symbol?Symbol:{},g=w.iterator||"@@iterator",_=w.asyncIterator||"@@asyncIterator",O=w.toStringTag||"@@toStringTag",E="object"===typeof e,j=t.regeneratorRuntime;if(j)return void(E&&(e.exports=j));j=t.regeneratorRuntime=E?e.exports:{},j.wrap=n;var k="suspendedStart",P="suspendedYield",R="executing",x="completed",C={},G={};G[g]=function(){return this};var L=Object.getPrototypeOf,S=L&&L(L(d([])));S&&S!==b&&v.call(S,g)&&(G=S);var M=i.prototype=o.prototype=Object.create(G);a.prototype=M.constructor=i,i.constructor=a,i[O]=a.displayName="GeneratorFunction",j.isGeneratorFunction=function(e){var t="function"===typeof e&&e.constructor;return!!t&&(t===a||"GeneratorFunction"===(t.displayName||t.name))},j.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,i):(e.__proto__=i,O in e||(e[O]="GeneratorFunction")),e.prototype=Object.create(M),e},j.awrap=function(e){return{__await:e}},l(c.prototype),c.prototype[_]=function(){return this},j.AsyncIterator=c,j.async=function(e,t,r,o){var a=new c(n(e,t,r,o));return j.isGeneratorFunction(t)?a:a.next().then(function(e){return e.done?e.value:a.next()})},l(M),M[O]="Generator",M[g]=function(){return this},M.toString=function(){return"[object Generator]"},j.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},j.values=d,y.prototype={constructor:y,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=m,this.done=!1,this.delegate=null,this.method="next",this.arg=m,this.tryEntries.forEach(p),!e)for(var t in this)"t"===t.charAt(0)&&v.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=m)},stop:function(){this.done=!0;var e=this.tryEntries[0],t=e.completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){function t(t,r){return a.type="throw",a.arg=e,n.next=t,r&&(n.method="next",n.arg=m),!!r}if(this.done)throw e;for(var n=this,r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r],a=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var i=v.call(o,"catchLoc"),l=v.call(o,"finallyLoc");if(i&&l){if(this.prev<o.catchLoc)return t(o.catchLoc,!0);if(this.prev<o.finallyLoc)return t(o.finallyLoc)}else if(i){if(this.prev<o.catchLoc)return t(o.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return t(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&v.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,C):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),C},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),p(n),C}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;p(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:d(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=m),C}}}(function(){return this}()||Function("return this")())},function(e,t){},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function a(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=n(1),l=n.n(i),c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=wp.components.Dashicon,f=wp.element.Component,p=function(e){function t(){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),u(t,[{key:"render",value:function(){var e=this.props,t=e.data,n=e.className,r=e.isSelected,o=e.isDisabled,a=e.onSelected,i={className:l()("foogallery-modal__item",n,{"is-selected":r,"is-disabled":o})};if(!o){i=c({},i,{onClick:function(e){e.stopPropagation(),a(t.id)},onKeyPress:function(e){e.stopPropagation(),32!=e.which&&13!=e.which||a(t.id)},tabIndex:0})}var u=t.thumbnail?wp.element.createElement("img",{className:"foogallery-modal__item-thumbnail",src:t.thumbnail}):wp.element.createElement(s,{className:"foogallery-modal__item-thumbnail",icon:"format-image"});return wp.element.createElement("figure",i,u,wp.element.createElement("figcaption",{className:"foogallery-modal__item-caption"},t.name),r?wp.element.createElement(s,{className:"foogallery-modal__icon-selected",icon:"yes"}):null,o?wp.element.createElement(s,{className:"foogallery-modal__icon-disabled",icon:"no"}):null)}}]),t}(f);t.a=p,p.defaultProps={data:{},className:"",isSelected:!1,isDisabled:!1,onSelected:_.noop}},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function a(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=wp.i18n.__,c=wp.element.Component,u=wp.components,s=u.Toolbar,f=u.IconButton,p=wp.editor.BlockControls,y=function(e){function t(){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),i(t,[{key:"render",value:function(){var e=this.props,t=e.select,n=e.onRequestModalOpen,r=e.canEdit,o=e.edit,a=e.onRequestGalleryEdit,i=e.canReload,l=e.reload,c=e.onRequestGalleryReload,u=e.remove,y=e.onRequestBlockRemove,d=e.children;return wp.element.createElement(p,null,wp.element.createElement(s,null,wp.element.createElement(f,{icon:"trash",label:u,onClick:y})),wp.element.createElement(s,null,wp.element.createElement(f,{icon:"format-gallery",label:t,onClick:n}),r?wp.element.createElement(f,{icon:"edit",label:o,onClick:a}):null,i?wp.element.createElement(f,{icon:"update",label:l,onClick:c}):null),d)}}]),t}(c);t.a=y,y.defaultProps={canEdit:!1,canReload:!1,select:l("Select gallery","foogallery"),remove:l("Remove gallery","foogallery"),reload:l("Reload gallery","foogallery"),edit:l("Edit gallery","foogallery"),onRequestModalOpen:_.noop,onRequestBlockRemove:_.noop,onRequestGalleryEdit:_.noop,onRequestGalleryReload:_.noop}},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function a(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=n(19),l=(n.n(i),function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}()),c=wp.i18n.__,u=wp.element.Component,s=wp.components,f=s.Button,p=s.IconButton,y=wp.editor.InspectorControls,d=function(e){function t(){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),l(t,[{key:"render",value:function(){var e=this.props,t=e.select,n=e.onRequestModalOpen,r=e.canEdit,o=e.edit,a=e.onRequestGalleryEdit,i=e.children;return wp.element.createElement(y,null,wp.element.createElement("div",{className:"foogallery-inspector-controls__button-container"},r?wp.element.createElement(p,{isDefault:!0,isLarge:!0,onClick:a,icon:"edit",label:o}):null,"\xa0",wp.element.createElement(f,{isPrimary:!0,isLarge:!0,onClick:n},t)),i)}}]),t}(u);t.a=d,d.defaultProps={canEdit:!1,edit:c("Edit Gallery","foogallery"),select:c("Select Gallery","foogallery"),onRequestGalleryEdit:_.noop,onRequestModalOpen:_.noop}},function(e,t){},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function a(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=n(2),l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),c=function e(t,n,r){null===t&&(t=Function.prototype);var o=Object.getOwnPropertyDescriptor(t,n);if(void 0===o){var a=Object.getPrototypeOf(t);return null===a?void 0:e(a,n,r)}if("value"in o)return o.value;var i=o.get;if(void 0!==i)return i.call(r)},u=wp.i18n,s=u.__,f=u.sprintf,p=wp.element.RawHTML,y=wp.components,d=y.ServerSideRender,h=y.Spinner,m=lodash,b=m.isEqual,v=function(e){function t(){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),l(t,[{key:"shouldComponentUpdate",value:function(e,t){var n=!b(this.props,e),r=!b(this.state,t);return n||r}},{key:"componentDidUpdate",value:function(){c(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"componentDidUpdate",this).apply(this,arguments);var e=this.props.attributes.id;jQuery('[id="foogallery-gallery-'+e+'"]').foogallery(FooGallery.autoDefaults)}},{key:"componentWillReceiveProps",value:function(e){var t=this.props.reload;e.reload!=t&&this.reload()}},{key:"reload",value:function(){this.setState({response:null})}},{key:"render",value:function(){var e=this.props,t=e.loading,n=e.error,r=e.empty,o=this.state.response;if(!o)return wp.element.createElement(i.a,{instructions:t},wp.element.createElement(h,null));if(o.error){var a=f(n,o.errorMsg);return wp.element.createElement(i.a,{instructions:a})}return o.length?wp.element.createElement(p,{key:"html"},o):wp.element.createElement(i.a,{instructions:r})}}]),t}(d);t.a=v,v.defaultProps={loading:s("Loading gallery...","foogallery"),error:s("Error loading gallery: %s","foogallery"),empty:s("No gallery was found.","foogallery")}},function(e,t,n){"use strict";function r(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function i(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l=n(0),c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=wp.i18n.__,s=wp.element,f=s.Component,p=s.Fragment,y=wp.components.Button,d=function(e){function t(){return o(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return i(t,e),c(t,[{key:"render",value:function(){var e=this.props,t=e.icon,n=e.label,o=e.instructions,a=e.button,i=r(e,["icon","label","instructions","button"]),c={icon:t,label:n,instructions:o};return wp.element.createElement(p,null,wp.element.createElement(l.a,i),wp.element.createElement(l.d,c,wp.element.createElement(y,{isDefault:!0,isLarge:!0,onClick:i.onRequestModalOpen},a)),wp.element.createElement(l.c,i),wp.element.createElement(l.b,i))}}]),t}(f);t.a=d,d.defaultProps={icon:"format-gallery",label:u("FooGallery","foogallery"),instructions:u("Duplicate gallery, please select another to insert.","foogallery"),button:u("Select Gallery","foogallery"),onRequestModalOpen:_.noop}},function(e,t,n){"use strict";function r(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function i(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l=n(0),c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=wp.element,s=u.Component,f=u.Fragment,p=function(e){function t(){return o(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return i(t,e),c(t,[{key:"render",value:function(){var e=this.props,t=e.block,n=e.attributes,o=e.reload,a=r(e,["block","attributes","reload"]);return wp.element.createElement(f,{className:"wp-block-fooplugins-foogallery"},wp.element.createElement(l.a,a),wp.element.createElement(l.e,{block:t,attributes:n,reload:o}),wp.element.createElement(l.c,a),wp.element.createElement(l.b,a))}}]),t}(s);t.a=p,p.defaultProps={block:"fooplugins/foogallery",attributes:{},reload:!1,canEdit:!0,canReload:!0}}]);
1
+ !function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=3)}([function(e,t,n){"use strict";var r=n(11);n.d(t,"c",function(){return r.a});var o=n(17);n.d(t,"a",function(){return o.a});var a=n(18);n.d(t,"b",function(){return a.a});var i=n(2);n.d(t,"d",function(){return i.a});var l=n(20);n.d(t,"e",function(){return l.a})},function(e,t,n){var r,o;!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var i=n.apply(null,r);i&&e.push(i)}else if("object"===o)for(var l in r)a.call(r,l)&&r[l]&&e.push(l)}}return e.join(" ")}var a={}.hasOwnProperty;"undefined"!==typeof e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";function r(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function i(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l=n(1),c=n.n(l),u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),f=(wp.i18n.__,wp.element.Component),p=wp.components.Placeholder,y=function(e){function t(){return o(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return i(t,e),s(t,[{key:"render",value:function(){var e=this.props,t=e.className,n=e.children,o=r(e,["className","children"]);return wp.element.createElement(p,u({className:c()("editor-media-placeholder",t)},o),n)}}]),t}(f);t.a=y},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(4)},function(e,t,n){"use strict";var r=n(5),o=(n.n(r),n(6)),a=(n.n(o),n(7)),i=wp.i18n.__;(0,wp.blocks.registerBlockType)("fooplugins/foogallery",{title:i("FooGallery"),description:i("Insert a FooGallery into your content"),icon:"format-gallery",category:"common",keywords:[i("foogallery"),i("gallery")],supports:{multiple:!0,html:!1},attributes:{id:{type:"number",default:0}},edit:function(e){return wp.element.createElement(a.a,e)},save:function(){return null}})},function(e,t){},function(e,t){},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function a(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=n(8),l=n(9),c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=wp.i18n.sprintf,f=wp.data.dispatch,p=wp.element.Component,y=window.FOOGALLERY_BLOCK.editGalleryUrl,d=function(e){function t(){r(this,t);var e=o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.state={isModalOpen:!1,reload:!1},e.showModal=e.showModal.bind(e),e.closeModal=e.closeModal.bind(e),e.insertGallery=e.insertGallery.bind(e),e.editGallery=e.editGallery.bind(e),e.reloadGallery=e.reloadGallery.bind(e),e.removeBlock=e.removeBlock.bind(e),e}return a(t,e),u(t,[{key:"componentDidMount",value:function(){var e=this.props,t=e.clientId,n=e.attributes.id;0!=n&&i.a.add(n,t)}},{key:"componentWillUnmount",value:function(){var e=this.props,t=e.clientId;0!=e.attributes.id&&i.a.remove(t)}},{key:"showModal",value:function(){this.setState({isModalOpen:!0})}},{key:"closeModal",value:function(){this.setState({isModalOpen:!1})}},{key:"insertGallery",value:function(e){var t=this.props,n=t.clientId,r=t.setAttributes;i.a.update(e,n),r({id:e})}},{key:"editGallery",value:function(){var e=this.props.attributes.id,t=s(y,e);window.open(t,"_blank")}},{key:"reloadGallery",value:function(){var e=this.state.reload;this.setState({reload:!e})}},{key:"removeBlock",value:function(){var e=this.props.clientId;f("core/editor").removeBlock(e)}},{key:"render",value:function(){var e=this.props,t=e.attributes,n=e.clientId,r=this.state,o=r.isModalOpen,a=r.reload,u={disable:i.a.ids(),isModalOpen:o,onRequestModalOpen:this.showModal,onRequestModalClose:this.closeModal,onRequestBlockRemove:this.removeBlock,onRequestGalleryInsert:this.insertGallery,onRequestGalleryEdit:this.editGallery,onRequestGalleryReload:this.reloadGallery};return i.a.contains(t.id,n)?wp.element.createElement(l.a,u):t.id?wp.element.createElement(l.c,c({attributes:t,reload:a},u)):wp.element.createElement(l.b,u)}}]),t}(p);t.a=d,d.defaultProps={}},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=[],i=function(){function e(){r(this,e)}return o(e,null,[{key:"add",value:function(e,t){return-1===a.findIndex(function(t){return t.id==e})&&(a.push({id:e,clientId:t}),!0)}},{key:"remove",value:function(e){var t=a.findIndex(function(t){return t.clientId==e});return-1!==t?(a.splice(t,1),!0):-1===t||!1}},{key:"update",value:function(e,t){return!!this.remove(t)&&this.add(e,t)}},{key:"ids",value:function(){return a.map(function(e){return e.id})}},{key:"contains",value:function(e,t){return-1!==a.findIndex(function(n){return n.id==e&&n.clientId!=t})}},{key:"array",get:function(){return a}}]),e}();t.a=i},function(e,t,n){"use strict";var r=n(10);n.d(t,"b",function(){return r.a});var o=n(21);n.d(t,"a",function(){return o.a});var a=n(22);n.d(t,"c",function(){return a.a})},function(e,t,n){"use strict";function r(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function i(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l=n(0),c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=wp.i18n.__,s=wp.element,f=s.Component,p=s.Fragment,y=wp.components.Button,d=function(e){function t(){return o(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return i(t,e),c(t,[{key:"render",value:function(){var e=this.props,t=e.icon,n=e.label,o=e.instructions,a=e.button,i=r(e,["icon","label","instructions","button"]),c={icon:t,label:n,instructions:o};return wp.element.createElement(p,null,wp.element.createElement(l.a,i),wp.element.createElement(l.d,c,wp.element.createElement(y,{isDefault:!0,isLarge:!0,onClick:i.onRequestModalOpen},a)),wp.element.createElement(l.c,i),wp.element.createElement(l.b,i))}}]),t}(f);t.a=d,d.defaultProps={icon:"format-gallery",label:u("FooGallery","foogallery"),instructions:u("Select the gallery you want to insert.","foogallery"),button:u("Select Gallery","foogallery"),onRequestModalOpen:_.noop}},function(e,t,n){"use strict";function r(e){return function(){var t=e.apply(this,arguments);return new Promise(function(e,n){function r(o,a){try{var i=t[o](a),l=i.value}catch(e){return void n(e)}if(!i.done)return Promise.resolve(l).then(function(e){r("next",e)},function(e){r("throw",e)});e(l)}return r("next")})}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function i(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l=n(12),c=n.n(l),u=n(15),s=(n.n(u),n(1)),f=n.n(s),p=n(16),y=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),d=wp.i18n.__,h=wp.element.Component,m=wp.components,b=m.Button,v=m.IconButton,w=m.Placeholder,g=m.Modal,O=m.Spinner,E=function(e){function t(){o(this,t);var e=a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.state={id:e.props.currentId,data:null,isLoading:!1,query:""},e.onReloadClick=e.onReloadClick.bind(e),e.onInsertClick=e.onInsertClick.bind(e),e.onQueryChange=e.onQueryChange.bind(e),e}return i(t,e),y(t,[{key:"fetchGalleries",value:function(){function e(){return t.apply(this,arguments)}var t=r(c.a.mark(function e(){var t;return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this.setState({isLoading:!0}),e.next=3,wp.apiFetch({path:"/foogallery/v1/galleries/"});case 3:t=e.sent,t.forEach(function(e){e.lowerName="string"===typeof e.name?e.name.toLowerCase():""}),this.setState({data:t,isLoading:!1});case 6:case"end":return e.stop()}},e,this)}));return e}()},{key:"onReloadClick",value:function(e){e.stopPropagation(),this.setState({data:null})}},{key:"onInsertClick",value:function(e){e.stopPropagation();var t=this.props,n=t.onRequestModalClose,r=t.onRequestGalleryInsert,o=this.state.id;0!=o&&(r(o),n())}},{key:"onQueryChange",value:function(e){this.setState({query:e.target.value})}},{key:"render",value:function(){var e=this.props,t=e.isModalOpen,n=e.className,r=e.title,o=e.insert,a=e.reload,i=e.search,l=e.onRequestModalClose;if(!t)return null;var c=this.state,u=c.id,s=c.isLoading,p=c.query;return wp.element.createElement(g,{className:f()("foogallery-modal",n),title:r,onRequestClose:l},wp.element.createElement("div",{className:"foogallery-modal__content"},wp.element.createElement("div",{className:"foogallery-modal__content-container"},this.renderContent())),wp.element.createElement("div",{className:"foogallery-modal__footer"},wp.element.createElement("input",{type:"text",className:"foogallery-modal__footer-search",placeholder:i,value:p,onChange:this.onQueryChange}),wp.element.createElement("div",{className:"foogallery-modal__footer-buttons"},wp.element.createElement(v,{isDefault:!0,icon:"update",label:a,onClick:this.onReloadClick,disabled:s}),wp.element.createElement(b,{isPrimary:!0,onClick:this.onInsertClick,disabled:0==u},o))))}},{key:"renderContent",value:function(){var e=this.props,t=e.disable,n=e.empty,r=e.loading,o=this.state,a=o.id,i=o.data,l=o.isLoading,c=o.query;if(null===i&&!l)return this.fetchGalleries(),null;if(l)return wp.element.createElement(w,{className:"foogallery-modal__content-placeholder",instructions:r},wp.element.createElement(O,null));if(null===i||!i.length)return wp.element.createElement(w,{className:"foogallery-modal__content-placeholder",instructions:n});var u=this,s=c&&c.length>2,f=s?c.toLowerCase():"";return(s?i.filter(function(e){return-1!==e.lowerName.indexOf(f)}):i).map(function(e){return wp.element.createElement(p.a,{data:e,isSelected:a==e.id,isDisabled:-1!==t.indexOf(e.id),onSelected:function(e){u.setState({id:e})}})})}}]),t}(h);t.a=E,E.defaultProps={currentId:0,isModalOpen:!1,className:"",title:d("Select the gallery you want to insert"),empty:d("No galleries found!"),insert:d("Insert Gallery"),reload:d("Reload Galleries"),loading:d("Loading galleries please wait..."),search:d("Search..."),disable:[],onRequestGalleryInsert:_.noop,onRequestModalClose:_.noop}},function(e,t,n){e.exports=n(13)},function(e,t,n){var r=function(){return this}()||Function("return this")(),o=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,a=o&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,e.exports=n(14),o)r.regeneratorRuntime=a;else try{delete r.regeneratorRuntime}catch(e){r.regeneratorRuntime=void 0}},function(e,t){!function(t){"use strict";function n(e,t,n,r){var a=t&&t.prototype instanceof o?t:o,i=Object.create(a.prototype),l=new y(r||[]);return i._invoke=u(e,n,l),i}function r(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function o(){}function a(){}function i(){}function l(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function c(e){function t(n,o,a,i){var l=r(e[n],e,o);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"===typeof u&&v.call(u,"__await")?Promise.resolve(u.__await).then(function(e){t("next",e,a,i)},function(e){t("throw",e,a,i)}):Promise.resolve(u).then(function(e){c.value=e,a(c)},i)}i(l.arg)}function n(e,n){function r(){return new Promise(function(r,o){t(e,n,r,o)})}return o=o?o.then(r,r):r()}var o;this._invoke=n}function u(e,t,n){var o=k;return function(a,i){if(o===R)throw new Error("Generator is already running");if(o===x){if("throw"===a)throw i;return h()}for(n.method=a,n.arg=i;;){var l=n.delegate;if(l){var c=s(l,n);if(c){if(c===C)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===k)throw o=x,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=R;var u=r(e,t,n);if("normal"===u.type){if(o=n.done?x:P,u.arg===C)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=x,n.method="throw",n.arg=u.arg)}}}function s(e,t){var n=e.iterator[t.method];if(n===m){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=m,s(e,t),"throw"===t.method))return C;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return C}var o=r(n,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,C;var a=o.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=m),t.delegate=null,C):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,C)}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function p(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function y(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function d(e){if(e){var t=e[g];if(t)return t.call(e);if("function"===typeof e.next)return e;if(!isNaN(e.length)){var n=-1,r=function t(){for(;++n<e.length;)if(v.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=m,t.done=!0,t};return r.next=r}}return{next:h}}function h(){return{value:m,done:!0}}var m,b=Object.prototype,v=b.hasOwnProperty,w="function"===typeof Symbol?Symbol:{},g=w.iterator||"@@iterator",_=w.asyncIterator||"@@asyncIterator",O=w.toStringTag||"@@toStringTag",E="object"===typeof e,j=t.regeneratorRuntime;if(j)return void(E&&(e.exports=j));j=t.regeneratorRuntime=E?e.exports:{},j.wrap=n;var k="suspendedStart",P="suspendedYield",R="executing",x="completed",C={},G={};G[g]=function(){return this};var L=Object.getPrototypeOf,S=L&&L(L(d([])));S&&S!==b&&v.call(S,g)&&(G=S);var N=i.prototype=o.prototype=Object.create(G);a.prototype=N.constructor=i,i.constructor=a,i[O]=a.displayName="GeneratorFunction",j.isGeneratorFunction=function(e){var t="function"===typeof e&&e.constructor;return!!t&&(t===a||"GeneratorFunction"===(t.displayName||t.name))},j.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,i):(e.__proto__=i,O in e||(e[O]="GeneratorFunction")),e.prototype=Object.create(N),e},j.awrap=function(e){return{__await:e}},l(c.prototype),c.prototype[_]=function(){return this},j.AsyncIterator=c,j.async=function(e,t,r,o){var a=new c(n(e,t,r,o));return j.isGeneratorFunction(t)?a:a.next().then(function(e){return e.done?e.value:a.next()})},l(N),N[O]="Generator",N[g]=function(){return this},N.toString=function(){return"[object Generator]"},j.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},j.values=d,y.prototype={constructor:y,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=m,this.done=!1,this.delegate=null,this.method="next",this.arg=m,this.tryEntries.forEach(p),!e)for(var t in this)"t"===t.charAt(0)&&v.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=m)},stop:function(){this.done=!0;var e=this.tryEntries[0],t=e.completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){function t(t,r){return a.type="throw",a.arg=e,n.next=t,r&&(n.method="next",n.arg=m),!!r}if(this.done)throw e;for(var n=this,r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r],a=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var i=v.call(o,"catchLoc"),l=v.call(o,"finallyLoc");if(i&&l){if(this.prev<o.catchLoc)return t(o.catchLoc,!0);if(this.prev<o.finallyLoc)return t(o.finallyLoc)}else if(i){if(this.prev<o.catchLoc)return t(o.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return t(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&v.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,C):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),C},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),p(n),C}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;p(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:d(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=m),C}}}(function(){return this}()||Function("return this")())},function(e,t){},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function a(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=n(1),l=n.n(i),c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=wp.components.Dashicon,f=wp.element.Component,p=function(e){function t(){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),u(t,[{key:"render",value:function(){var e=this.props,t=e.data,n=e.className,r=e.isSelected,o=e.isDisabled,a=e.onSelected,i={className:l()("foogallery-modal__item",n,{"is-selected":r,"is-disabled":o})};if(!o){i=c({},i,{onClick:function(e){e.stopPropagation(),a(t.id)},onKeyPress:function(e){e.stopPropagation(),32!=e.which&&13!=e.which||a(t.id)},tabIndex:0})}var u=t.thumbnail?wp.element.createElement("img",{className:"foogallery-modal__item-thumbnail",src:t.thumbnail}):wp.element.createElement(s,{className:"foogallery-modal__item-thumbnail",icon:"format-image"});return wp.element.createElement("figure",i,u,wp.element.createElement("figcaption",{className:"foogallery-modal__item-caption"},t.name),r?wp.element.createElement(s,{className:"foogallery-modal__icon-selected",icon:"yes"}):null,o?wp.element.createElement(s,{className:"foogallery-modal__icon-disabled",icon:"no"}):null)}}]),t}(f);t.a=p,p.defaultProps={data:{},className:"",isSelected:!1,isDisabled:!1,onSelected:_.noop}},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function a(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=wp.i18n.__,c=wp.element.Component,u=wp.components,s=u.Toolbar,f=u.IconButton,p=wp.editor.BlockControls,y=function(e){function t(){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),i(t,[{key:"render",value:function(){var e=this.props,t=e.select,n=e.onRequestModalOpen,r=e.canEdit,o=e.edit,a=e.onRequestGalleryEdit,i=e.canReload,l=e.reload,c=e.onRequestGalleryReload,u=e.remove,y=e.onRequestBlockRemove,d=e.children;return wp.element.createElement(p,null,wp.element.createElement(s,null,wp.element.createElement(f,{icon:"trash",label:u,onClick:y})),wp.element.createElement(s,null,wp.element.createElement(f,{icon:"format-gallery",label:t,onClick:n}),r?wp.element.createElement(f,{icon:"edit",label:o,onClick:a}):null,i?wp.element.createElement(f,{icon:"update",label:l,onClick:c}):null),d)}}]),t}(c);t.a=y,y.defaultProps={canEdit:!1,canReload:!1,select:l("Select gallery","foogallery"),remove:l("Remove gallery","foogallery"),reload:l("Reload gallery","foogallery"),edit:l("Edit gallery","foogallery"),onRequestModalOpen:_.noop,onRequestBlockRemove:_.noop,onRequestGalleryEdit:_.noop,onRequestGalleryReload:_.noop}},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function a(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=n(19),l=(n.n(i),function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}()),c=wp.i18n.__,u=wp.element.Component,s=wp.components,f=s.Button,p=s.IconButton,y=wp.editor.InspectorControls,d=function(e){function t(){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),l(t,[{key:"render",value:function(){var e=this.props,t=e.select,n=e.onRequestModalOpen,r=e.canEdit,o=e.edit,a=e.onRequestGalleryEdit,i=e.children;return wp.element.createElement(y,null,wp.element.createElement("div",{className:"foogallery-inspector-controls__button-container"},r?wp.element.createElement(p,{isDefault:!0,isLarge:!0,onClick:a,icon:"edit",label:o}):null,"\xa0",wp.element.createElement(f,{isPrimary:!0,isLarge:!0,onClick:n},t)),i)}}]),t}(u);t.a=d,d.defaultProps={canEdit:!1,edit:c("Edit Gallery","foogallery"),select:c("Select Gallery","foogallery"),onRequestGalleryEdit:_.noop,onRequestModalOpen:_.noop}},function(e,t){},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function a(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=n(2),l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),c=function e(t,n,r){null===t&&(t=Function.prototype);var o=Object.getOwnPropertyDescriptor(t,n);if(void 0===o){var a=Object.getPrototypeOf(t);return null===a?void 0:e(a,n,r)}if("value"in o)return o.value;var i=o.get;if(void 0!==i)return i.call(r)},u=wp.i18n,s=u.__,f=u.sprintf,p=wp.element.RawHTML,y=wp.components,d=y.ServerSideRender,h=y.Spinner,m=lodash,b=m.isEqual,v=function(e){function t(){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),l(t,[{key:"shouldComponentUpdate",value:function(e,t){var n=!b(this.props,e),r=!b(this.state,t);return n||r}},{key:"componentDidUpdate",value:function(){c(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"componentDidUpdate",this).apply(this,arguments);var e=this.props.attributes.id;jQuery('[id="foogallery-gallery-'+e+'"]').foogallery(FooGallery.autoDefaults)}},{key:"componentWillReceiveProps",value:function(e){var t=this.props.reload;e.reload!=t&&this.reload()}},{key:"reload",value:function(){this.setState({response:null})}},{key:"render",value:function(){var e=this.props,t=e.loading,n=e.error,r=e.empty,o=this.state.response;if(!o)return wp.element.createElement(i.a,{instructions:t},wp.element.createElement(h,null));if(o.error){var a=f(n,o.errorMsg);return wp.element.createElement(i.a,{instructions:a})}return o.length?wp.element.createElement(p,{key:"html"},o):wp.element.createElement(i.a,{instructions:r})}}]),t}(d);t.a=v,v.defaultProps={loading:s("Loading gallery...","foogallery"),error:s("Error loading gallery: %s","foogallery"),empty:s("No gallery was found.","foogallery")}},function(e,t,n){"use strict";function r(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function i(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l=n(0),c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=wp.i18n.__,s=wp.element,f=s.Component,p=s.Fragment,y=wp.components.Button,d=function(e){function t(){return o(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return i(t,e),c(t,[{key:"render",value:function(){var e=this.props,t=e.icon,n=e.label,o=e.instructions,a=e.button,i=r(e,["icon","label","instructions","button"]),c={icon:t,label:n,instructions:o};return wp.element.createElement(p,null,wp.element.createElement(l.a,i),wp.element.createElement(l.d,c,wp.element.createElement(y,{isDefault:!0,isLarge:!0,onClick:i.onRequestModalOpen},a)),wp.element.createElement(l.c,i),wp.element.createElement(l.b,i))}}]),t}(f);t.a=d,d.defaultProps={icon:"format-gallery",label:u("FooGallery","foogallery"),instructions:u("Duplicate gallery, please select another to insert.","foogallery"),button:u("Select Gallery","foogallery"),onRequestModalOpen:_.noop}},function(e,t,n){"use strict";function r(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function i(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l=n(0),c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=wp.element,s=u.Component,f=u.Fragment,p=function(e){function t(){return o(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return i(t,e),c(t,[{key:"render",value:function(){var e=this.props,t=e.block,n=e.attributes,o=e.reload,a=r(e,["block","attributes","reload"]);return wp.element.createElement(f,{className:"wp-block-fooplugins-foogallery"},wp.element.createElement(l.a,a),wp.element.createElement(l.e,{block:t,attributes:n,reload:o}),wp.element.createElement(l.c,a),wp.element.createElement(l.b,a))}}]),t}(s);t.a=p,p.defaultProps={block:"fooplugins/foogallery",attributes:{},reload:!1,canEdit:!0,canReload:!0}}]);
gutenberg/dist/blocks.editor.build.css CHANGED
@@ -1,2 +1,2 @@
1
- .foogallery-modal__content{text-align:center}.foogallery-modal__content-container{position:relative;display:inline-block}.foogallery-modal__content-placeholder{background-color:transparent;min-height:150px;border:solid 3px transparent;outline:solid 1px transparent;margin:10px}.foogallery-modal__footer{border-top:1px solid #e2e4e7;padding:0 16px;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;background:#fff;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;height:56px;position:-webkit-sticky;position:sticky;bottom:0;z-index:10;margin:16px -16px -16px}.foogallery-modal__footer-container{-ms-flex-align:center;align-items:center;-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:end;justify-content:flex-end}.foogallery-modal__item{display:inline-block;position:relative;width:150px;height:150px;border:solid 3px #FFF;-webkit-box-shadow:0 0 0 1px #ccc, inset 0 0 0 1px #ccc;box-shadow:0 0 0 1px #ccc, inset 0 0 0 1px #ccc;background-color:#f7f7f7;margin:10px;cursor:pointer;border-radius:3px}.foogallery-modal__item:focus{border-style:dashed}.foogallery-modal__item:hover,.foogallery-modal__item.is-selected{border-style:solid}.foogallery-modal__item:hover,.foogallery-modal__item:focus,.foogallery-modal__item.is-selected{border-color:#0085ba;-webkit-box-shadow:0 0 0 1px #00648c, inset 0 0 0 1px #00648c;box-shadow:0 0 0 1px #00648c, inset 0 0 0 1px #00648c}.foogallery-modal__item.is-disabled{border-color:#e4e4e4;-webkit-box-shadow:0 0 0 1px #ccc, inset 0 0 0 1px #ccc;box-shadow:0 0 0 1px #ccc, inset 0 0 0 1px #ccc;cursor:not-allowed}img.foogallery-modal__item-thumbnail{display:block;width:100%;height:100%}.foogallery-modal__item.is-disabled img.foogallery-modal__item-thumbnail{-webkit-filter:grayscale(1);filter:grayscale(1)}svg.foogallery-modal__item-thumbnail{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);width:64px;height:64px;fill:#CCC}.foogallery-modal__item-caption{display:block;position:absolute;bottom:0;left:0;width:100%;height:auto;max-height:100%;overflow:hidden;color:#FFF;padding:10px 5px 5px;background:rgba(0,0,0,0.5);background:-webkit-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.5) 15px, rgba(0,0,0,0.5) 100%);background:-o-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.5) 15px, rgba(0,0,0,0.5) 100%);background:linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.5) 15px, rgba(0,0,0,0.5) 100%)}svg.dashicon.foogallery-modal__icon-selected,svg.dashicon.foogallery-modal__icon-disabled{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);fill:#FFF;width:60px;height:60px;-webkit-filter:drop-shadow(0px 0px 5px #000);filter:drop-shadow(0px 0px 5px #000)}
2
- .foogallery-inspector-controls__button-container{text-align:center;margin:-16px;padding:16px}.foogallery-inspector-controls__button-container button{display:-ms-inline-flexbox;display:inline-flex}
1
+ .foogallery-modal__content{text-align:center}.foogallery-modal__content-container{position:relative;display:inline-block}.foogallery-modal__content-placeholder{background-color:transparent;min-height:150px;border:solid 3px transparent;outline:solid 1px transparent;margin:10px}.foogallery-modal__footer{border-top:1px solid #e2e4e7;padding:0 16px;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;background:#fff;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;height:56px;position:-webkit-sticky;position:sticky;bottom:0;z-index:10;margin:16px -16px -16px}.foogallery-modal__footer-search{-ms-flex:1;flex:1}.foogallery-modal__footer-buttons{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-pack:end;justify-content:flex-end}.foogallery-modal__footer-buttons .components-button,.foogallery-modal__footer-buttons .components-icon-button{display:-ms-inline-flexbox;display:inline-flex}.foogallery-modal__footer-buttons .components-button{margin-right:4px}.foogallery-modal__footer-buttons .components-button:last-of-type{margin-right:0}.foogallery-modal__item{display:inline-block;position:relative;width:150px;height:150px;border:solid 3px #FFF;-webkit-box-shadow:0 0 0 1px #ccc, inset 0 0 0 1px #ccc;box-shadow:0 0 0 1px #ccc, inset 0 0 0 1px #ccc;background-color:#f7f7f7;margin:10px;cursor:pointer;border-radius:3px}.foogallery-modal__item:focus{border-style:dashed}.foogallery-modal__item:hover,.foogallery-modal__item.is-selected{border-style:solid}.foogallery-modal__item:hover,.foogallery-modal__item:focus,.foogallery-modal__item.is-selected{border-color:#0085ba;-webkit-box-shadow:0 0 0 1px #00648c, inset 0 0 0 1px #00648c;box-shadow:0 0 0 1px #00648c, inset 0 0 0 1px #00648c}.foogallery-modal__item.is-disabled{border-color:#e4e4e4;-webkit-box-shadow:0 0 0 1px #ccc, inset 0 0 0 1px #ccc;box-shadow:0 0 0 1px #ccc, inset 0 0 0 1px #ccc;cursor:not-allowed}img.foogallery-modal__item-thumbnail{display:block;width:100%;height:100%}.foogallery-modal__item.is-disabled img.foogallery-modal__item-thumbnail{-webkit-filter:grayscale(1);filter:grayscale(1)}svg.foogallery-modal__item-thumbnail{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);width:64px;height:64px;fill:#CCC}.foogallery-modal__item-caption{display:block;position:absolute;bottom:0;left:0;width:100%;height:auto;max-height:100%;overflow:hidden;color:#FFF;padding:10px 5px 5px;background:rgba(0,0,0,0.5);background:-webkit-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.5) 15px, rgba(0,0,0,0.5) 100%);background:-o-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.5) 15px, rgba(0,0,0,0.5) 100%);background:linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.5) 15px, rgba(0,0,0,0.5) 100%)}svg.dashicon.foogallery-modal__icon-selected,svg.dashicon.foogallery-modal__icon-disabled{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);fill:#FFF;width:60px;height:60px;-webkit-filter:drop-shadow(0px 0px 5px #000);filter:drop-shadow(0px 0px 5px #000)}
2
+ .foogallery-inspector-controls__button-container{text-align:center;margin:-16px;padding:16px}.foogallery-inspector-controls__button-container button{display:-ms-inline-flexbox;display:inline-flex}
gutenberg/src/block/edit/components/modal/editor.scss CHANGED
@@ -39,13 +39,24 @@
39
  margin: 16px -16px -16px;
40
  }
41
 
42
- .foogallery-modal__footer-container {
43
- align-items: center;
44
- flex-grow: 1;
 
45
  display: flex;
46
- flex-direction: row;
47
  justify-content: flex-end;
48
  }
 
 
 
 
 
 
 
 
 
 
49
 
50
  /* #.# FooGalleryItem Editor Styles */
51
 
39
  margin: 16px -16px -16px;
40
  }
41
 
42
+ .foogallery-modal__footer-search {
43
+ flex: 1;
44
+ }
45
+ .foogallery-modal__footer-buttons {
46
  display: flex;
47
+ flex: 1;
48
  justify-content: flex-end;
49
  }
50
+ .foogallery-modal__footer-buttons .components-button,
51
+ .foogallery-modal__footer-buttons .components-icon-button {
52
+ display: inline-flex;
53
+ }
54
+ .foogallery-modal__footer-buttons .components-button {
55
+ margin-right: 4px;
56
+ }
57
+ .foogallery-modal__footer-buttons .components-button:last-of-type {
58
+ margin-right: 0;
59
+ }
60
 
61
  /* #.# FooGalleryItem Editor Styles */
62
 
gutenberg/src/block/edit/components/modal/index.js CHANGED
@@ -19,16 +19,21 @@ export default class FooGalleryEditModal extends Component {
19
  this.state = {
20
  id: this.props.currentId,
21
  data: null,
22
- isLoading: false
 
23
  };
24
 
25
  this.onReloadClick = this.onReloadClick.bind( this );
26
  this.onInsertClick = this.onInsertClick.bind( this );
 
27
  }
28
 
29
  async fetchGalleries(){
30
  this.setState( { isLoading: true } );
31
  let data = await wp.apiFetch({ path: "/foogallery/v1/galleries/" });
 
 
 
32
  this.setState( { data: data, isLoading: false } );
33
  }
34
 
@@ -47,14 +52,18 @@ export default class FooGalleryEditModal extends Component {
47
  }
48
  }
49
 
 
 
 
 
50
  render() {
51
- const { isModalOpen, className, title, insert, reload, onRequestModalClose } = this.props;
52
 
53
  if ( !isModalOpen ){
54
  return null;
55
  }
56
 
57
- const { id, isLoading } = this.state;
58
 
59
  return (
60
  <Modal className={ classnames( "foogallery-modal", className ) }
@@ -66,11 +75,10 @@ export default class FooGalleryEditModal extends Component {
66
  </div>
67
  </div>
68
  <div className="foogallery-modal__footer">
69
- <div className="foogallery-modal__footer-container">
70
- <IconButton isDefault icon="update" label={ reload } onClick={ this.onReloadClick } disabled={ isLoading }/>&nbsp;
71
- <Button isPrimary onClick={ this.onInsertClick } disabled={ id == 0 }>
72
- { insert }
73
- </Button>
74
  </div>
75
  </div>
76
  </Modal>
@@ -79,7 +87,7 @@ export default class FooGalleryEditModal extends Component {
79
 
80
  renderContent(){
81
  const { disable, empty, loading } = this.props;
82
- const { id, data, isLoading } = this.state;
83
 
84
  if ( data === null && !isLoading ){
85
  this.fetchGalleries();
@@ -94,8 +102,14 @@ export default class FooGalleryEditModal extends Component {
94
  return (<Placeholder className="foogallery-modal__content-placeholder" instructions={ empty }/>);
95
  }
96
 
97
- let self = this;
98
- return data.map(gallery => {
 
 
 
 
 
 
99
  return (
100
  <FooGalleryEditModalItem
101
  data={ gallery }
@@ -118,6 +132,7 @@ FooGalleryEditModal.defaultProps = {
118
  insert: __("Insert Gallery"),
119
  reload: __("Reload Galleries"),
120
  loading: __("Loading galleries please wait..."),
 
121
  disable: [],
122
  onRequestGalleryInsert: _.noop,
123
  onRequestModalClose: _.noop
19
  this.state = {
20
  id: this.props.currentId,
21
  data: null,
22
+ isLoading: false,
23
+ query: ''
24
  };
25
 
26
  this.onReloadClick = this.onReloadClick.bind( this );
27
  this.onInsertClick = this.onInsertClick.bind( this );
28
+ this.onQueryChange = this.onQueryChange.bind( this );
29
  }
30
 
31
  async fetchGalleries(){
32
  this.setState( { isLoading: true } );
33
  let data = await wp.apiFetch({ path: "/foogallery/v1/galleries/" });
34
+ data.forEach(gallery => {
35
+ gallery.lowerName = typeof gallery.name === 'string' ? gallery.name.toLowerCase() : '';
36
+ });
37
  this.setState( { data: data, isLoading: false } );
38
  }
39
 
52
  }
53
  }
54
 
55
+ onQueryChange(event){
56
+ this.setState({query: event.target.value});
57
+ }
58
+
59
  render() {
60
+ const { isModalOpen, className, title, insert, reload, search, onRequestModalClose } = this.props;
61
 
62
  if ( !isModalOpen ){
63
  return null;
64
  }
65
 
66
+ const { id, isLoading, query } = this.state;
67
 
68
  return (
69
  <Modal className={ classnames( "foogallery-modal", className ) }
75
  </div>
76
  </div>
77
  <div className="foogallery-modal__footer">
78
+ <input type="text" className="foogallery-modal__footer-search" placeholder={ search } value={ query } onChange={ this.onQueryChange } />
79
+ <div className="foogallery-modal__footer-buttons">
80
+ <IconButton isDefault icon="update" label={ reload } onClick={ this.onReloadClick } disabled={ isLoading }/>
81
+ <Button isPrimary onClick={ this.onInsertClick } disabled={ id == 0 }>{ insert }</Button>
 
82
  </div>
83
  </div>
84
  </Modal>
87
 
88
  renderContent(){
89
  const { disable, empty, loading } = this.props;
90
+ const { id, data, isLoading, query } = this.state;
91
 
92
  if ( data === null && !isLoading ){
93
  this.fetchGalleries();
102
  return (<Placeholder className="foogallery-modal__content-placeholder" instructions={ empty }/>);
103
  }
104
 
105
+ let self = this,
106
+ hasQuery = query && query.length > 2,
107
+ lowerQuery = hasQuery ? query.toLowerCase() : '',
108
+ filtered = hasQuery ? data.filter(gallery => {
109
+ return gallery.lowerName.indexOf(lowerQuery) !== -1;
110
+ }) : data;
111
+
112
+ return filtered.map(gallery => {
113
  return (
114
  <FooGalleryEditModalItem
115
  data={ gallery }
132
  insert: __("Insert Gallery"),
133
  reload: __("Reload Galleries"),
134
  loading: __("Loading galleries please wait..."),
135
+ search: __("Search..."),
136
  disable: [],
137
  onRequestGalleryInsert: _.noop,
138
  onRequestModalClose: _.noop
includes/admin/class-settings.php CHANGED
@@ -301,14 +301,6 @@ if ( ! class_exists( 'FooGallery_Admin_Settings' ) ) {
301
  'tab' => 'advanced'
302
  );
303
 
304
- // $settings[] = array(
305
- // 'id' => 'force_https',
306
- // 'title' => __( 'Force HTTPS', 'foogallery' ),
307
- // 'desc' => __( 'Force all thumbnails to use HTTPS protocol.', 'foogallery' ),
308
- // 'type' => 'checkbox',
309
- // 'tab' => 'advanced'
310
- // );
311
-
312
  $settings[] = array(
313
  'id' => 'use_future_endpoint',
314
  'title' => __( 'Use Beta Endpoint', 'foogallery' ),
301
  'tab' => 'advanced'
302
  );
303
 
 
 
 
 
 
 
 
 
304
  $settings[] = array(
305
  'id' => 'use_future_endpoint',
306
  'title' => __( 'Use Beta Endpoint', 'foogallery' ),
includes/class-foogallery-force-https.php ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Class used to force HTTPS for all FooGallery assets
4
+ * @since 1.6.18
5
+ */
6
+ if ( ! class_exists( 'FooGallery_ForceHttps' ) ) {
7
+
8
+ class FooGallery_ForceHttps {
9
+
10
+ function __construct() {
11
+ add_filter( 'foogallery_admin_settings_override', array($this, 'add_settings' ) );
12
+ add_action( 'plugins_loaded', array( $this, 'enable_force' ) );
13
+ }
14
+
15
+ /**
16
+ * Enables the force checks based on the setting. This is done here so that the setting is only checked once per page load, rather than multiple times
17
+ *
18
+ */
19
+ function enable_force() {
20
+ if ( 'on' === foogallery_get_setting( 'force_https' ) ) {
21
+ add_filter( 'foogallery_attachment_resize_thumbnail', array( $this, 'force_thumbnail_to_https' ), 99, 3 );
22
+ add_filter( 'foogallery_enqueue_style_src', array( $this, 'force_css_to_https'), 99, 2 );
23
+ add_filter( 'foogallery_core_gallery_script', array( $this, 'force_js_to_https'), 99 );
24
+ }
25
+ }
26
+
27
+ /**
28
+ * Add settings for Force Https
29
+ * @param $settings
30
+ *
31
+ * @return array
32
+ */
33
+ function add_settings( $settings ) {
34
+ $settings['settings'][] = array(
35
+ 'id' => 'force_https',
36
+ 'title' => __( 'Force HTTPS', 'foogallery' ),
37
+ 'desc' => __( 'Force all assets (thumbnails, javascript, css) to load over the HTTPS protocol. This can help overcome some issues when moving your site across to HTTPS and you get mixed content errors.', 'foogallery' ),
38
+ 'type' => 'checkbox',
39
+ 'tab' => 'advanced'
40
+ );
41
+ return $settings;
42
+ }
43
+
44
+ /**
45
+ * Helper function that does the replacement and forces Https
46
+ *
47
+ * @param $url
48
+ *
49
+ * @return string
50
+ */
51
+ function force_https( $url ) {
52
+ return str_replace( 'http://', 'https://', $url );
53
+ }
54
+
55
+ /**
56
+ * Force a thumbnail src to Https
57
+ *
58
+ * @param $original_image_src
59
+ * @param $args
60
+ * @param $thumbnail_object
61
+ *
62
+ * @return string
63
+ */
64
+ function force_thumbnail_to_https( $original_image_src, $args, $thumbnail_object ) {
65
+ $original_image_src = $this->force_https( $original_image_src );
66
+ return $original_image_src;
67
+ }
68
+
69
+ /**
70
+ * Force any CSS loaded using the foogallery_enqueue_style function to Https
71
+ *
72
+ * @param $src
73
+ * @param $handle
74
+ *
75
+ * @return string
76
+ */
77
+ function force_css_to_https( $src, $handle ) {
78
+ $src = $this->force_https( $src );
79
+ return $src;
80
+ }
81
+
82
+ /**
83
+ * Force the js loaded for the default gallery templates to Https
84
+ *
85
+ * @param $src
86
+ *
87
+ * @return string
88
+ */
89
+ function force_js_to_https( $src ) {
90
+ $src = $this->force_https( $src );
91
+ return $src;
92
+ }
93
+ }
94
+ }
includes/class-foogallery-lazyload.php CHANGED
@@ -60,11 +60,10 @@ if ( ! class_exists( 'FooGallery_LazyLoad' ) ) {
60
  $lazyloading_forced_disabled = foogallery_get_setting('disable_lazy_loading') === 'on';
61
  $current_foogallery->lazyload_forced_disabled = $lazyloading_forced_disabled;
62
 
63
- //check if we are inside a feed. Always disable lazy load when shown within a feed
64
  if ( is_feed() ) {
65
- $current_foogallery->lazyload_forced_disabled = true;
66
  }
67
-
68
  }
69
  }
70
  }
@@ -81,18 +80,9 @@ if ( ! class_exists( 'FooGallery_LazyLoad' ) ) {
81
 
82
  if ($current_foogallery !== null) {
83
 
84
- //check that lazy loading was not disabled from the Gallery Settings -> Advanced Tab
85
- if ( isset( $current_foogallery->lazyload_enabled ) ) {
86
- if ( false === $current_foogallery->lazyload_enabled ) {
87
- return $attr;
88
- }
89
- }
90
-
91
- //check that lazy loading was not disabled from Global Settings or any other reason
92
- if ( isset( $current_foogallery->lazyload_forced_disabled ) ) {
93
- if ( true === $current_foogallery->lazyload_forced_disabled ) {
94
- return $attr;
95
- }
96
  }
97
 
98
  if (isset($current_foogallery->lazyload_support) && true === $current_foogallery->lazyload_support) {
@@ -109,6 +99,12 @@ if ( ! class_exists( 'FooGallery_LazyLoad' ) ) {
109
  unset($attr['srcset']);
110
  $attr['data-srcset-fg'] = $src;
111
  }
 
 
 
 
 
 
112
  }
113
  }
114
 
@@ -128,14 +124,9 @@ if ( ! class_exists( 'FooGallery_LazyLoad' ) ) {
128
  {
129
  if ( isset( $gallery->lazyload_support ) && true === $gallery->lazyload_support ) {
130
  $options['lazy'] = $gallery->lazyload_enabled && !$gallery->lazyload_forced_disabled;
131
- if ( $options['lazy'] ) {
132
- $options['src'] = 'data-src-fg';
133
- $options['srcset'] = 'data-srcset-fg';
134
- } else {
135
- $options['src'] = 'src';
136
- $options['srcset'] = 'srcset';
137
- }
138
- }
139
  return $options;
140
  }
141
 
60
  $lazyloading_forced_disabled = foogallery_get_setting('disable_lazy_loading') === 'on';
61
  $current_foogallery->lazyload_forced_disabled = $lazyloading_forced_disabled;
62
 
63
+ //check if we are inside a feed
64
  if ( is_feed() ) {
65
+ $current_foogallery->is_feed = true;
66
  }
 
67
  }
68
  }
69
  }
80
 
81
  if ($current_foogallery !== null) {
82
 
83
+ //check if we inside a feed and exit early
84
+ if ( isset( $current_foogallery->is_feed ) && true === $current_foogallery->is_feed ) {
85
+ return $attr;
 
 
 
 
 
 
 
 
 
86
  }
87
 
88
  if (isset($current_foogallery->lazyload_support) && true === $current_foogallery->lazyload_support) {
99
  unset($attr['srcset']);
100
  $attr['data-srcset-fg'] = $src;
101
  }
102
+
103
+ //do not add the src attribute
104
+ if ( false ) {
105
+ //set the src to a 1x1 transparent gif
106
+ $attr['src'] = FOOGALLERY_URL . 'assets/1x1.gif';
107
+ }
108
  }
109
  }
110
 
124
  {
125
  if ( isset( $gallery->lazyload_support ) && true === $gallery->lazyload_support ) {
126
  $options['lazy'] = $gallery->lazyload_enabled && !$gallery->lazyload_forced_disabled;
127
+ $options['src'] = 'data-src-fg';
128
+ $options['srcset'] = 'data-srcset-fg';
129
+ }
 
 
 
 
 
130
  return $options;
131
  }
132
 
includes/foopluginbase/.gitignore ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #################
2
+ ## Eclipse
3
+ #################
4
+
5
+ *.pydevproject
6
+ .project
7
+ .metadata
8
+ bin/
9
+ tmp/
10
+ *.tmp
11
+ *.bak
12
+ *.swp
13
+ *~.nib
14
+ local.properties
15
+ .classpath
16
+ .settings/
17
+ .loadpath
18
+
19
+ # External tool builders
20
+ .externalToolBuilders/
21
+
22
+ # Locally stored "Eclipse launch configurations"
23
+ *.launch
24
+
25
+ # CDT-specific
26
+ .cproject
27
+
28
+ # PDT-specific
29
+ .buildpath
30
+
31
+
32
+ #################
33
+ ## Visual Studio
34
+ #################
35
+
36
+ ## Ignore Visual Studio temporary files, build results, and
37
+ ## files generated by popular Visual Studio add-ons.
38
+
39
+ # User-specific files
40
+ *.suo
41
+ *.user
42
+ *.sln.docstates
43
+
44
+ # Build results
45
+ [Dd]ebug/
46
+ [Rr]elease/
47
+ *_i.c
48
+ *_p.c
49
+ *.ilk
50
+ *.meta
51
+ *.obj
52
+ *.pch
53
+ *.pdb
54
+ *.pgc
55
+ *.pgd
56
+ *.rsp
57
+ *.sbr
58
+ *.tlb
59
+ *.tli
60
+ *.tlh
61
+ *.tmp
62
+ *.vspscc
63
+ .builds
64
+ *.dotCover
65
+
66
+ ## TODO: If you have NuGet Package Restore enabled, uncomment this
67
+ #packages/
68
+
69
+ # Visual C++ cache files
70
+ ipch/
71
+ *.aps
72
+ *.ncb
73
+ *.opensdf
74
+ *.sdf
75
+
76
+ # Visual Studio profiler
77
+ *.psess
78
+ *.vsp
79
+
80
+ # ReSharper is a .NET coding add-in
81
+ _ReSharper*
82
+
83
+ # Installshield output folder
84
+ [Ee]xpress
85
+
86
+ # DocProject is a documentation generator add-in
87
+ DocProject/buildhelp/
88
+ DocProject/Help/*.HxT
89
+ DocProject/Help/*.HxC
90
+ DocProject/Help/*.hhc
91
+ DocProject/Help/*.hhk
92
+ DocProject/Help/*.hhp
93
+ DocProject/Help/Html2
94
+ DocProject/Help/html
95
+
96
+ # Click-Once directory
97
+ publish
98
+
99
+ # Others
100
+ [Bb]in
101
+ [Oo]bj
102
+ sql
103
+ TestResults
104
+ *.Cache
105
+ ClientBin
106
+ stylecop.*
107
+ ~$*
108
+ *.dbmdl
109
+ Generated_Code #added for RIA/Silverlight projects
110
+
111
+ # Backup & report files from converting an old project file to a newer
112
+ # Visual Studio version. Backup files are not needed, because we have git ;-)
113
+ _UpgradeReport_Files/
114
+ Backup*/
115
+ UpgradeLog*.XML
116
+
117
+
118
+
119
+ ############
120
+ ## Windows
121
+ ############
122
+
123
+ # Windows image file caches
124
+ Thumbs.db
125
+
126
+ # Folder config file
127
+ Desktop.ini
128
+
129
+ #############
130
+ ## IIS
131
+ #############
132
+
133
+ web.config
134
+
135
+ #############
136
+ ## Python
137
+ #############
138
+
139
+ *.py[co]
140
+
141
+ # Packages
142
+ *.egg
143
+ *.egg-info
144
+ build
145
+ eggs
146
+ parts
147
+ bin
148
+ var
149
+ sdist
150
+ develop-eggs
151
+ .installed.cfg
152
+
153
+ # Installer logs
154
+ pip-log.txt
155
+
156
+ # Unit test / coverage reports
157
+ .coverage
158
+ .tox
159
+
160
+ #Translations
161
+ *.mo
162
+
163
+ #Mr Developer
164
+ .mr.developer.cfg
165
+
166
+ # Mac crap
167
+ .DS_Store
168
+
169
+ # Grunt related
170
+ /node_modules/
171
+
172
+ #############
173
+ ## phpStorm
174
+ #############
175
+
176
+ .idea/
177
+
178
+
179
+ #############
180
+ ## Custom
181
+ #############
182
+
183
+ build/
includes/functions.php CHANGED
@@ -574,6 +574,8 @@ function foogallery_activate_default_templates_extension() {
574
  * @param string $media
575
  */
576
  function foogallery_enqueue_style( $handle, $src, $deps = array(), $ver = false, $media = 'all' ) {
 
 
577
  wp_enqueue_style( $handle, $src, $deps, $ver, $media );
578
  do_action( 'foogallery_enqueue_style', $handle, $src, $deps, $ver, $media );
579
  }
574
  * @param string $media
575
  */
576
  function foogallery_enqueue_style( $handle, $src, $deps = array(), $ver = false, $media = 'all' ) {
577
+ $src = apply_filters( 'foogallery_enqueue_style_src', $src, $handle );
578
+
579
  wp_enqueue_style( $handle, $src, $deps, $ver, $media );
580
  do_action( 'foogallery_enqueue_style', $handle, $src, $deps, $ver, $media );
581
  }
includes/includes.php CHANGED
@@ -48,6 +48,7 @@ require_once( FOOGALLERY_PATH . 'includes/class-foogallery-paging.php' );
48
  require_once( FOOGALLERY_PATH . 'includes/class-foogallery-attachment-custom-class.php' );
49
  require_once( FOOGALLERY_PATH . 'includes/class-foogallery-extensions-compatibility.php' );
50
  require_once( FOOGALLERY_PATH . 'includes/class-foogallery-default-crop-position.php' );
 
51
 
52
  //Datasource includes
53
  require_once( FOOGALLERY_PATH . 'includes/interface-foogallery-datasource.php' );
48
  require_once( FOOGALLERY_PATH . 'includes/class-foogallery-attachment-custom-class.php' );
49
  require_once( FOOGALLERY_PATH . 'includes/class-foogallery-extensions-compatibility.php' );
50
  require_once( FOOGALLERY_PATH . 'includes/class-foogallery-default-crop-position.php' );
51
+ require_once( FOOGALLERY_PATH . 'includes/class-foogallery-force-https.php' );
52
 
53
  //Datasource includes
54
  require_once( FOOGALLERY_PATH . 'includes/interface-foogallery-datasource.php' );
includes/render-functions.php CHANGED
@@ -35,7 +35,7 @@ function foogallery_attachment_html_image_src( $foogallery_attachment, $args = a
35
  function foogallery_attachment_html_image( $foogallery_attachment, $args = array() ) {
36
  $attr = foogallery_build_attachment_html_image_attributes( $foogallery_attachment, $args );
37
 
38
- $html = '<img ';
39
  foreach ( $attr as $name => $value ) {
40
  $name = str_replace(' ', '', $name); //ensure we have no spaces!
41
  $html .= " $name=" . '"' . foogallery_esc_attr($value) . '"';
@@ -103,7 +103,7 @@ function foogallery_build_attachment_html_image_attributes( $foogallery_attachme
103
  function foogallery_attachment_html_anchor_opening( $foogallery_attachment, $args = array() ) {
104
  $attr = foogallery_build_attachment_html_anchor_attributes( $foogallery_attachment, $args );
105
 
106
- $html = '<a ';
107
  foreach ( $attr as $name => $value ) {
108
  $name = str_replace(' ', '', $name); //ensure we have no spaces!
109
  $html .= " $name=" . '"' . foogallery_esc_attr($value) . '"';
@@ -175,7 +175,7 @@ function foogallery_build_attachment_html_anchor_attributes( $foogallery_attachm
175
  $attr = apply_filters( 'foogallery_attachment_html_link_attributes', $attr, $args, $foogallery_attachment );
176
 
177
  //always add the fg-thumb class
178
- if ( array_key_exists( 'class', $attr ) ) {
179
  $attr['class'] .= ' fg-thumb';
180
  } else {
181
  $attr['class'] = 'fg-thumb';
@@ -364,10 +364,12 @@ function foogallery_attachment_html( $foogallery_attachment, $args = array() ) {
364
 
365
  $html = foogallery_attachment_html_item_opening( $foogallery_attachment, $args );
366
  $html .= foogallery_attachment_html_anchor_opening( $foogallery_attachment, $args );
 
367
  $html .= foogallery_attachment_html_image( $foogallery_attachment, $args );
 
368
  $html .= '</a>';
369
  $html .= foogallery_attachment_html_caption( $foogallery_attachment, $args );
370
- $html .= '</figure></div>';
371
  return $html;
372
  }
373
 
@@ -405,16 +407,16 @@ function foogallery_build_json_object_from_attachment( $foogallery_attachment, $
405
  $image_attributes = foogallery_build_attachment_html_image_attributes( $foogallery_attachment, $args );
406
  $captions = foogallery_build_attachment_html_caption( $foogallery_attachment, $args );
407
 
408
- if ( array_key_exists( 'src', $image_attributes ) ) {
409
- $src = $image_attributes['src'];
410
- } else if ( array_key_exists( 'data-src-fg', $image_attributes ) ) {
411
  $src = $image_attributes['data-src-fg'];
 
 
412
  }
413
 
414
- if ( array_key_exists( 'srcset', $image_attributes ) ) {
415
- $srcset = $image_attributes['srcset'];
416
- } else if ( array_key_exists( 'data-srcset-fg', $image_attributes ) ) {
417
  $srcset = $image_attributes['data-srcset-fg'];
 
 
418
  }
419
 
420
  $json_object = new stdClass();
35
  function foogallery_attachment_html_image( $foogallery_attachment, $args = array() ) {
36
  $attr = foogallery_build_attachment_html_image_attributes( $foogallery_attachment, $args );
37
 
38
+ $html = '<img';
39
  foreach ( $attr as $name => $value ) {
40
  $name = str_replace(' ', '', $name); //ensure we have no spaces!
41
  $html .= " $name=" . '"' . foogallery_esc_attr($value) . '"';
103
  function foogallery_attachment_html_anchor_opening( $foogallery_attachment, $args = array() ) {
104
  $attr = foogallery_build_attachment_html_anchor_attributes( $foogallery_attachment, $args );
105
 
106
+ $html = '<a';
107
  foreach ( $attr as $name => $value ) {
108
  $name = str_replace(' ', '', $name); //ensure we have no spaces!
109
  $html .= " $name=" . '"' . foogallery_esc_attr($value) . '"';
175
  $attr = apply_filters( 'foogallery_attachment_html_link_attributes', $attr, $args, $foogallery_attachment );
176
 
177
  //always add the fg-thumb class
178
+ if ( array_key_exists( 'class', $attr ) && !empty( $attr['class'] ) ) {
179
  $attr['class'] .= ' fg-thumb';
180
  } else {
181
  $attr['class'] = 'fg-thumb';
364
 
365
  $html = foogallery_attachment_html_item_opening( $foogallery_attachment, $args );
366
  $html .= foogallery_attachment_html_anchor_opening( $foogallery_attachment, $args );
367
+ $html .= '<span class="fg-image-wrap">';
368
  $html .= foogallery_attachment_html_image( $foogallery_attachment, $args );
369
+ $html .= '</span>';
370
  $html .= '</a>';
371
  $html .= foogallery_attachment_html_caption( $foogallery_attachment, $args );
372
+ $html .= '</figure><div class="fg-loader"></div></div>';
373
  return $html;
374
  }
375
 
407
  $image_attributes = foogallery_build_attachment_html_image_attributes( $foogallery_attachment, $args );
408
  $captions = foogallery_build_attachment_html_caption( $foogallery_attachment, $args );
409
 
410
+ if ( array_key_exists( 'data-src-fg', $image_attributes ) ) {
 
 
411
  $src = $image_attributes['data-src-fg'];
412
+ } else if (array_key_exists( 'src', $image_attributes ) ) {
413
+ $src = $image_attributes['src'];
414
  }
415
 
416
+ if ( array_key_exists( 'data-srcset-fg', $image_attributes ) ) {
 
 
417
  $srcset = $image_attributes['data-srcset-fg'];
418
+ } else if ( array_key_exists( 'srcset', $image_attributes ) ) {
419
+ $srcset = $image_attributes['srcset'];
420
  }
421
 
422
  $json_object = new stdClass();
js/foogallery.admin.min.js CHANGED
@@ -1,6 +1,6 @@
1
  /*
2
  * FooGallery - The Most Intuitive and Extensible Gallery Creation and Management Tool Ever Created for WordPress
3
- * @version 1.1.13
4
  * @link
5
  * @copyright Steven Usher & Brad Vincent 2015
6
  * @license Released under the GPLv3 license.
1
  /*
2
  * FooGallery - The Most Intuitive and Extensible Gallery Creation and Management Tool Ever Created for WordPress
3
+ * @version 1.2.3
4
  * @link
5
  * @copyright Steven Usher & Brad Vincent 2015
6
  * @license Released under the GPLv3 license.
package-lock.json CHANGED
@@ -5629,40 +5629,40 @@
5629
  "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI="
5630
  },
5631
  "npm": {
5632
- "version": "6.4.1",
5633
- "resolved": "https://registry.npmjs.org/npm/-/npm-6.4.1.tgz",
5634
- "integrity": "sha512-mXJL1NTVU136PtuopXCUQaNWuHlXCTp4McwlSW8S9/Aj8OEPAlSBgo8og7kJ01MjCDrkmqFQTvN5tTEhBMhXQg==",
5635
  "requires": {
5636
- "JSONStream": "1.3.4",
5637
  "abbrev": "1.1.1",
5638
  "ansicolors": "0.3.2",
5639
  "ansistyles": "0.1.3",
5640
- "aproba": "1.2.0",
5641
  "archy": "1.0.0",
5642
  "bin-links": "1.1.2",
5643
- "bluebird": "3.5.1",
5644
- "byte-size": "4.0.3",
5645
- "cacache": "11.2.0",
5646
  "call-limit": "1.1.0",
5647
- "chownr": "1.0.1",
5648
- "ci-info": "1.4.0",
5649
  "cli-columns": "3.1.2",
5650
- "cli-table3": "0.5.0",
5651
  "cmd-shim": "2.0.2",
5652
  "columnify": "1.5.4",
5653
- "config-chain": "1.1.11",
5654
  "debuglog": "1.0.1",
5655
  "detect-indent": "5.0.0",
5656
  "detect-newline": "2.1.0",
5657
  "dezalgo": "1.0.3",
5658
  "editor": "1.0.0",
5659
- "figgy-pudding": "3.4.1",
5660
  "find-npm-prefix": "1.0.2",
5661
  "fs-vacuum": "1.2.10",
5662
  "fs-write-stream-atomic": "1.0.10",
5663
  "gentle-fs": "2.0.1",
5664
- "glob": "7.1.2",
5665
- "graceful-fs": "4.1.11",
5666
  "has-unicode": "2.0.1",
5667
  "hosted-git-info": "2.7.1",
5668
  "iferr": "1.0.2",
@@ -5671,13 +5671,18 @@
5671
  "inherits": "2.0.3",
5672
  "ini": "1.3.5",
5673
  "init-package-json": "1.10.3",
5674
- "is-cidr": "2.0.6",
5675
  "json-parse-better-errors": "1.0.2",
5676
  "lazy-property": "1.0.0",
5677
- "libcipm": "2.0.2",
5678
- "libnpmhook": "4.0.1",
 
 
 
 
 
5679
  "libnpx": "10.2.0",
5680
- "lock-verify": "2.0.2",
5681
  "lockfile": "1.0.4",
5682
  "lodash._baseindexof": "3.1.0",
5683
  "lodash._baseuniq": "4.6.0",
@@ -5690,59 +5695,58 @@
5690
  "lodash.union": "4.6.0",
5691
  "lodash.uniq": "4.5.0",
5692
  "lodash.without": "4.4.0",
5693
- "lru-cache": "4.1.3",
5694
  "meant": "1.0.1",
5695
  "mississippi": "3.0.0",
5696
  "mkdirp": "0.5.1",
5697
  "move-concurrently": "1.0.1",
5698
  "node-gyp": "3.8.0",
5699
  "nopt": "4.0.1",
5700
- "normalize-package-data": "2.4.0",
5701
- "npm-audit-report": "1.3.1",
5702
  "npm-cache-filename": "1.0.2",
5703
  "npm-install-checks": "3.0.0",
5704
  "npm-lifecycle": "2.1.0",
5705
  "npm-package-arg": "6.1.0",
5706
- "npm-packlist": "1.1.11",
5707
- "npm-pick-manifest": "2.1.0",
5708
- "npm-profile": "3.0.2",
5709
- "npm-registry-client": "8.6.0",
5710
- "npm-registry-fetch": "1.1.0",
5711
  "npm-user-validate": "1.0.0",
5712
  "npmlog": "4.1.2",
5713
  "once": "1.4.0",
5714
- "opener": "1.5.0",
5715
  "osenv": "0.1.5",
5716
- "pacote": "8.1.6",
5717
  "path-is-inside": "1.0.2",
5718
  "promise-inflight": "1.0.1",
5719
  "qrcode-terminal": "0.12.0",
5720
- "query-string": "6.1.0",
5721
  "qw": "1.0.1",
5722
  "read": "1.0.7",
5723
  "read-cmd-shim": "1.0.1",
5724
  "read-installed": "4.0.3",
5725
  "read-package-json": "2.0.13",
5726
- "read-package-tree": "5.2.1",
5727
- "readable-stream": "2.3.6",
5728
  "readdir-scoped-modules": "1.0.2",
5729
  "request": "2.88.0",
5730
  "retry": "0.12.0",
5731
- "rimraf": "2.6.2",
5732
  "safe-buffer": "5.1.2",
5733
- "semver": "5.5.0",
5734
  "sha": "2.0.1",
5735
  "slide": "1.1.6",
5736
  "sorted-object": "2.0.1",
5737
  "sorted-union-stream": "2.1.3",
5738
- "ssri": "6.0.0",
5739
  "stringify-package": "1.0.0",
5740
- "tar": "4.4.6",
5741
  "text-table": "0.2.0",
5742
  "tiny-relative-date": "1.3.0",
5743
  "uid-number": "0.0.6",
5744
  "umask": "1.1.0",
5745
- "unique-filename": "1.1.0",
5746
  "unpipe": "1.0.0",
5747
  "update-notifier": "2.5.0",
5748
  "uuid": "3.3.2",
@@ -5750,11 +5754,11 @@
5750
  "validate-npm-package-name": "3.0.0",
5751
  "which": "1.3.1",
5752
  "worker-farm": "1.6.0",
5753
- "write-file-atomic": "2.3.0"
5754
  },
5755
  "dependencies": {
5756
  "JSONStream": {
5757
- "version": "1.3.4",
5758
  "bundled": true,
5759
  "requires": {
5760
  "jsonparse": "1.3.1",
@@ -5766,7 +5770,7 @@
5766
  "bundled": true
5767
  },
5768
  "agent-base": {
5769
- "version": "4.2.0",
5770
  "bundled": true,
5771
  "requires": {
5772
  "es6-promisify": "5.0.0"
@@ -5816,7 +5820,7 @@
5816
  "bundled": true
5817
  },
5818
  "aproba": {
5819
- "version": "1.2.0",
5820
  "bundled": true
5821
  },
5822
  "archy": {
@@ -5829,6 +5833,28 @@
5829
  "requires": {
5830
  "delegates": "1.0.0",
5831
  "readable-stream": "2.3.6"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5832
  }
5833
  },
5834
  "asap": {
@@ -5874,11 +5900,11 @@
5874
  "version": "1.1.2",
5875
  "bundled": true,
5876
  "requires": {
5877
- "bluebird": "3.5.1",
5878
  "cmd-shim": "2.0.2",
5879
  "gentle-fs": "2.0.1",
5880
- "graceful-fs": "4.1.11",
5881
- "write-file-atomic": "2.3.0"
5882
  }
5883
  },
5884
  "block-stream": {
@@ -5889,7 +5915,7 @@
5889
  }
5890
  },
5891
  "bluebird": {
5892
- "version": "3.5.1",
5893
  "bundled": true
5894
  },
5895
  "boxen": {
@@ -5917,10 +5943,6 @@
5917
  "version": "1.0.0",
5918
  "bundled": true
5919
  },
5920
- "builtin-modules": {
5921
- "version": "1.1.1",
5922
- "bundled": true
5923
- },
5924
  "builtins": {
5925
  "version": "1.0.3",
5926
  "bundled": true
@@ -5930,27 +5952,51 @@
5930
  "bundled": true
5931
  },
5932
  "byte-size": {
5933
- "version": "4.0.3",
5934
  "bundled": true
5935
  },
5936
  "cacache": {
5937
- "version": "11.2.0",
5938
  "bundled": true,
5939
  "requires": {
5940
- "bluebird": "3.5.1",
5941
- "chownr": "1.0.1",
5942
- "figgy-pudding": "3.4.1",
5943
- "glob": "7.1.2",
5944
- "graceful-fs": "4.1.11",
5945
- "lru-cache": "4.1.3",
5946
  "mississippi": "3.0.0",
5947
  "mkdirp": "0.5.1",
5948
  "move-concurrently": "1.0.1",
5949
  "promise-inflight": "1.0.1",
5950
- "rimraf": "2.6.2",
5951
- "ssri": "6.0.0",
5952
- "unique-filename": "1.1.0",
5953
  "y18n": "4.0.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5954
  }
5955
  },
5956
  "call-limit": {
@@ -5979,15 +6025,15 @@
5979
  }
5980
  },
5981
  "chownr": {
5982
- "version": "1.0.1",
5983
  "bundled": true
5984
  },
5985
  "ci-info": {
5986
- "version": "1.4.0",
5987
  "bundled": true
5988
  },
5989
  "cidr-regex": {
5990
- "version": "2.0.9",
5991
  "bundled": true,
5992
  "requires": {
5993
  "ip-regex": "2.1.0"
@@ -6006,10 +6052,10 @@
6006
  }
6007
  },
6008
  "cli-table3": {
6009
- "version": "0.5.0",
6010
  "bundled": true,
6011
  "requires": {
6012
- "colors": "1.1.2",
6013
  "object-assign": "4.1.1",
6014
  "string-width": "2.1.1"
6015
  }
@@ -6044,7 +6090,7 @@
6044
  "version": "2.0.2",
6045
  "bundled": true,
6046
  "requires": {
6047
- "graceful-fs": "4.1.11",
6048
  "mkdirp": "0.5.1"
6049
  }
6050
  },
@@ -6068,7 +6114,7 @@
6068
  "bundled": true
6069
  },
6070
  "colors": {
6071
- "version": "1.1.2",
6072
  "bundled": true,
6073
  "optional": true
6074
  },
@@ -6099,10 +6145,32 @@
6099
  "inherits": "2.0.3",
6100
  "readable-stream": "2.3.6",
6101
  "typedarray": "0.0.6"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6102
  }
6103
  },
6104
  "config-chain": {
6105
- "version": "1.1.11",
6106
  "bundled": true,
6107
  "requires": {
6108
  "ini": "1.3.5",
@@ -6114,10 +6182,10 @@
6114
  "bundled": true,
6115
  "requires": {
6116
  "dot-prop": "4.2.0",
6117
- "graceful-fs": "4.1.11",
6118
  "make-dir": "1.3.0",
6119
  "unique-string": "1.0.0",
6120
- "write-file-atomic": "2.3.0",
6121
  "xdg-basedir": "3.0.0"
6122
  }
6123
  },
@@ -6133,10 +6201,14 @@
6133
  "fs-write-stream-atomic": "1.0.10",
6134
  "iferr": "0.1.5",
6135
  "mkdirp": "0.5.1",
6136
- "rimraf": "2.6.2",
6137
  "run-queue": "1.0.3"
6138
  },
6139
  "dependencies": {
 
 
 
 
6140
  "iferr": {
6141
  "version": "0.1.5",
6142
  "bundled": true
@@ -6158,7 +6230,7 @@
6158
  "version": "5.1.0",
6159
  "bundled": true,
6160
  "requires": {
6161
- "lru-cache": "4.1.3",
6162
  "shebang-command": "1.2.0",
6163
  "which": "1.3.1"
6164
  }
@@ -6261,6 +6333,28 @@
6261
  "inherits": "2.0.3",
6262
  "readable-stream": "2.3.6",
6263
  "stream-shift": "1.0.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6264
  }
6265
  },
6266
  "ecc-jsbn": {
@@ -6302,14 +6396,14 @@
6302
  }
6303
  },
6304
  "es6-promise": {
6305
- "version": "4.2.4",
6306
  "bundled": true
6307
  },
6308
  "es6-promisify": {
6309
  "version": "5.0.0",
6310
  "bundled": true,
6311
  "requires": {
6312
- "es6-promise": "4.2.4"
6313
  }
6314
  },
6315
  "escape-string-regexp": {
@@ -6327,6 +6421,12 @@
6327
  "p-finally": "1.0.0",
6328
  "signal-exit": "3.0.2",
6329
  "strip-eof": "1.0.0"
 
 
 
 
 
 
6330
  }
6331
  },
6332
  "extend": {
@@ -6346,7 +6446,7 @@
6346
  "bundled": true
6347
  },
6348
  "figgy-pudding": {
6349
- "version": "3.4.1",
6350
  "bundled": true
6351
  },
6352
  "find-npm-prefix": {
@@ -6366,6 +6466,28 @@
6366
  "requires": {
6367
  "inherits": "2.0.3",
6368
  "readable-stream": "2.3.6"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6369
  }
6370
  },
6371
  "forever-agent": {
@@ -6387,6 +6509,28 @@
6387
  "requires": {
6388
  "inherits": "2.0.3",
6389
  "readable-stream": "2.3.6"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6390
  }
6391
  },
6392
  "fs-minipass": {
@@ -6400,16 +6544,16 @@
6400
  "version": "1.2.10",
6401
  "bundled": true,
6402
  "requires": {
6403
- "graceful-fs": "4.1.11",
6404
  "path-is-inside": "1.0.2",
6405
- "rimraf": "2.6.2"
6406
  }
6407
  },
6408
  "fs-write-stream-atomic": {
6409
  "version": "1.0.10",
6410
  "bundled": true,
6411
  "requires": {
6412
- "graceful-fs": "4.1.11",
6413
  "iferr": "0.1.5",
6414
  "imurmurhash": "0.1.4",
6415
  "readable-stream": "2.3.6"
@@ -6418,6 +6562,26 @@
6418
  "iferr": {
6419
  "version": "0.1.5",
6420
  "bundled": true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6421
  }
6422
  }
6423
  },
@@ -6429,10 +6593,10 @@
6429
  "version": "1.0.11",
6430
  "bundled": true,
6431
  "requires": {
6432
- "graceful-fs": "4.1.11",
6433
  "inherits": "2.0.3",
6434
  "mkdirp": "0.5.1",
6435
- "rimraf": "2.6.2"
6436
  }
6437
  },
6438
  "gauge": {
@@ -6449,6 +6613,10 @@
6449
  "wide-align": "1.1.2"
6450
  },
6451
  "dependencies": {
 
 
 
 
6452
  "string-width": {
6453
  "version": "1.0.2",
6454
  "bundled": true,
@@ -6461,7 +6629,7 @@
6461
  }
6462
  },
6463
  "genfun": {
6464
- "version": "4.0.1",
6465
  "bundled": true
6466
  },
6467
  "gentle-fs": {
@@ -6470,7 +6638,7 @@
6470
  "requires": {
6471
  "aproba": "1.2.0",
6472
  "fs-vacuum": "1.2.10",
6473
- "graceful-fs": "4.1.11",
6474
  "iferr": "0.1.5",
6475
  "mkdirp": "0.5.1",
6476
  "path-is-inside": "1.0.2",
@@ -6478,6 +6646,10 @@
6478
  "slide": "1.1.6"
6479
  },
6480
  "dependencies": {
 
 
 
 
6481
  "iferr": {
6482
  "version": "0.1.5",
6483
  "bundled": true
@@ -6489,8 +6661,11 @@
6489
  "bundled": true
6490
  },
6491
  "get-stream": {
6492
- "version": "3.0.0",
6493
- "bundled": true
 
 
 
6494
  },
6495
  "getpass": {
6496
  "version": "0.1.7",
@@ -6500,7 +6675,7 @@
6500
  }
6501
  },
6502
  "glob": {
6503
- "version": "7.1.2",
6504
  "bundled": true,
6505
  "requires": {
6506
  "fs.realpath": "1.0.0",
@@ -6533,10 +6708,16 @@
6533
  "timed-out": "4.0.1",
6534
  "unzip-response": "2.0.1",
6535
  "url-parse-lax": "1.0.0"
 
 
 
 
 
 
6536
  }
6537
  },
6538
  "graceful-fs": {
6539
- "version": "4.1.11",
6540
  "bundled": true
6541
  },
6542
  "har-schema": {
@@ -6571,7 +6752,7 @@
6571
  "version": "2.1.0",
6572
  "bundled": true,
6573
  "requires": {
6574
- "agent-base": "4.2.0",
6575
  "debug": "3.1.0"
6576
  }
6577
  },
@@ -6588,7 +6769,7 @@
6588
  "version": "2.2.1",
6589
  "bundled": true,
6590
  "requires": {
6591
- "agent-base": "4.2.0",
6592
  "debug": "3.1.0"
6593
  }
6594
  },
@@ -6645,12 +6826,12 @@
6645
  "version": "1.10.3",
6646
  "bundled": true,
6647
  "requires": {
6648
- "glob": "7.1.2",
6649
  "npm-package-arg": "6.1.0",
6650
  "promzard": "0.3.0",
6651
  "read": "1.0.7",
6652
  "read-package-json": "2.0.13",
6653
- "semver": "5.5.0",
6654
  "validate-npm-package-license": "3.0.4",
6655
  "validate-npm-package-name": "3.0.0"
6656
  }
@@ -6667,25 +6848,24 @@
6667
  "version": "2.1.0",
6668
  "bundled": true
6669
  },
6670
- "is-builtin-module": {
6671
- "version": "1.0.0",
6672
- "bundled": true,
6673
- "requires": {
6674
- "builtin-modules": "1.1.1"
6675
- }
6676
- },
6677
  "is-ci": {
6678
  "version": "1.1.0",
6679
  "bundled": true,
6680
  "requires": {
6681
- "ci-info": "1.4.0"
 
 
 
 
 
 
6682
  }
6683
  },
6684
  "is-cidr": {
6685
- "version": "2.0.6",
6686
  "bundled": true,
6687
  "requires": {
6688
- "cidr-regex": "2.0.9"
6689
  }
6690
  },
6691
  "is-fullwidth-code-point": {
@@ -6800,43 +6980,175 @@
6800
  }
6801
  },
6802
  "libcipm": {
6803
- "version": "2.0.2",
6804
  "bundled": true,
6805
  "requires": {
6806
  "bin-links": "1.1.2",
6807
- "bluebird": "3.5.1",
 
6808
  "find-npm-prefix": "1.0.2",
6809
- "graceful-fs": "4.1.11",
6810
- "lock-verify": "2.0.2",
 
6811
  "mkdirp": "0.5.1",
6812
  "npm-lifecycle": "2.1.0",
6813
  "npm-logical-tree": "1.2.1",
6814
  "npm-package-arg": "6.1.0",
6815
- "pacote": "8.1.6",
6816
- "protoduck": "5.0.0",
6817
  "read-package-json": "2.0.13",
6818
- "rimraf": "2.6.2",
6819
  "worker-farm": "1.6.0"
6820
  }
6821
  },
6822
- "libnpmhook": {
6823
- "version": "4.0.1",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6824
  "bundled": true,
6825
  "requires": {
6826
- "figgy-pudding": "3.4.1",
6827
- "npm-registry-fetch": "3.1.1"
 
6828
  },
6829
  "dependencies": {
6830
- "npm-registry-fetch": {
6831
- "version": "3.1.1",
 
 
 
 
 
 
 
6832
  "bundled": true,
6833
  "requires": {
6834
- "bluebird": "3.5.1",
6835
- "figgy-pudding": "3.4.1",
6836
- "lru-cache": "4.1.3",
6837
- "make-fetch-happen": "4.0.1",
6838
- "npm-package-arg": "6.1.0"
6839
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6840
  }
6841
  }
6842
  },
@@ -6846,7 +7158,7 @@
6846
  "requires": {
6847
  "dotenv": "5.0.1",
6848
  "npm-package-arg": "6.1.0",
6849
- "rimraf": "2.6.2",
6850
  "safe-buffer": "5.1.2",
6851
  "update-notifier": "2.5.0",
6852
  "which": "1.3.1",
@@ -6863,11 +7175,11 @@
6863
  }
6864
  },
6865
  "lock-verify": {
6866
- "version": "2.0.2",
6867
  "bundled": true,
6868
  "requires": {
6869
  "npm-package-arg": "6.1.0",
6870
- "semver": "5.5.0"
6871
  }
6872
  },
6873
  "lockfile": {
@@ -6941,7 +7253,7 @@
6941
  "bundled": true
6942
  },
6943
  "lru-cache": {
6944
- "version": "4.1.3",
6945
  "bundled": true,
6946
  "requires": {
6947
  "pseudomap": "1.0.2",
@@ -6960,16 +7272,16 @@
6960
  "bundled": true,
6961
  "requires": {
6962
  "agentkeepalive": "3.4.1",
6963
- "cacache": "11.2.0",
6964
  "http-cache-semantics": "3.8.1",
6965
  "http-proxy-agent": "2.1.0",
6966
  "https-proxy-agent": "2.2.1",
6967
- "lru-cache": "4.1.3",
6968
  "mississippi": "3.0.0",
6969
  "node-fetch-npm": "2.0.2",
6970
  "promise-retry": "1.1.1",
6971
  "socks-proxy-agent": "4.0.1",
6972
- "ssri": "6.0.0"
6973
  }
6974
  },
6975
  "meant": {
@@ -7024,7 +7336,7 @@
7024
  }
7025
  },
7026
  "minizlib": {
7027
- "version": "1.1.0",
7028
  "bundled": true,
7029
  "requires": {
7030
  "minipass": "2.3.3"
@@ -7061,8 +7373,14 @@
7061
  "copy-concurrently": "1.0.5",
7062
  "fs-write-stream-atomic": "1.0.10",
7063
  "mkdirp": "0.5.1",
7064
- "rimraf": "2.6.2",
7065
  "run-queue": "1.0.3"
 
 
 
 
 
 
7066
  }
7067
  },
7068
  "ms": {
@@ -7087,14 +7405,14 @@
7087
  "bundled": true,
7088
  "requires": {
7089
  "fstream": "1.0.11",
7090
- "glob": "7.1.2",
7091
- "graceful-fs": "4.1.11",
7092
  "mkdirp": "0.5.1",
7093
  "nopt": "3.0.6",
7094
  "npmlog": "4.1.2",
7095
  "osenv": "0.1.5",
7096
  "request": "2.88.0",
7097
- "rimraf": "2.6.2",
7098
  "semver": "5.3.0",
7099
  "tar": "2.2.1",
7100
  "which": "1.3.1"
@@ -7131,25 +7449,34 @@
7131
  }
7132
  },
7133
  "normalize-package-data": {
7134
- "version": "2.4.0",
7135
  "bundled": true,
7136
  "requires": {
7137
  "hosted-git-info": "2.7.1",
7138
- "is-builtin-module": "1.0.0",
7139
- "semver": "5.5.0",
7140
  "validate-npm-package-license": "3.0.4"
 
 
 
 
 
 
 
 
 
7141
  }
7142
  },
7143
  "npm-audit-report": {
7144
- "version": "1.3.1",
7145
  "bundled": true,
7146
  "requires": {
7147
- "cli-table3": "0.5.0",
7148
  "console-control-strings": "1.1.0"
7149
  }
7150
  },
7151
  "npm-bundled": {
7152
- "version": "1.0.5",
7153
  "bundled": true
7154
  },
7155
  "npm-cache-filename": {
@@ -7160,7 +7487,7 @@
7160
  "version": "3.0.0",
7161
  "bundled": true,
7162
  "requires": {
7163
- "semver": "5.5.0"
7164
  }
7165
  },
7166
  "npm-lifecycle": {
@@ -7168,7 +7495,7 @@
7168
  "bundled": true,
7169
  "requires": {
7170
  "byline": "5.0.0",
7171
- "graceful-fs": "4.1.11",
7172
  "node-gyp": "3.8.0",
7173
  "resolve-from": "4.0.0",
7174
  "slide": "1.1.6",
@@ -7187,170 +7514,46 @@
7187
  "requires": {
7188
  "hosted-git-info": "2.7.1",
7189
  "osenv": "0.1.5",
7190
- "semver": "5.5.0",
7191
  "validate-npm-package-name": "3.0.0"
7192
  }
7193
  },
7194
  "npm-packlist": {
7195
- "version": "1.1.11",
7196
  "bundled": true,
7197
  "requires": {
7198
  "ignore-walk": "3.0.1",
7199
- "npm-bundled": "1.0.5"
7200
  }
7201
  },
7202
  "npm-pick-manifest": {
7203
- "version": "2.1.0",
7204
  "bundled": true,
7205
  "requires": {
 
7206
  "npm-package-arg": "6.1.0",
7207
- "semver": "5.5.0"
7208
  }
7209
  },
7210
  "npm-profile": {
7211
- "version": "3.0.2",
7212
  "bundled": true,
7213
  "requires": {
7214
- "aproba": "1.2.0",
7215
- "make-fetch-happen": "4.0.1"
7216
- }
7217
- },
7218
- "npm-registry-client": {
7219
- "version": "8.6.0",
7220
- "bundled": true,
7221
- "requires": {
7222
- "concat-stream": "1.6.2",
7223
- "graceful-fs": "4.1.11",
7224
- "normalize-package-data": "2.4.0",
7225
- "npm-package-arg": "6.1.0",
7226
- "npmlog": "4.1.2",
7227
- "once": "1.4.0",
7228
- "request": "2.88.0",
7229
- "retry": "0.10.1",
7230
- "safe-buffer": "5.1.2",
7231
- "semver": "5.5.0",
7232
- "slide": "1.1.6",
7233
- "ssri": "5.3.0"
7234
- },
7235
- "dependencies": {
7236
- "retry": {
7237
- "version": "0.10.1",
7238
- "bundled": true
7239
- },
7240
- "ssri": {
7241
- "version": "5.3.0",
7242
- "bundled": true,
7243
- "requires": {
7244
- "safe-buffer": "5.1.2"
7245
- }
7246
- }
7247
  }
7248
  },
7249
  "npm-registry-fetch": {
7250
- "version": "1.1.0",
7251
  "bundled": true,
7252
  "requires": {
7253
- "bluebird": "3.5.1",
7254
- "figgy-pudding": "2.0.1",
7255
- "lru-cache": "4.1.3",
7256
- "make-fetch-happen": "3.0.0",
7257
- "npm-package-arg": "6.1.0",
7258
- "safe-buffer": "5.1.2"
7259
- },
7260
- "dependencies": {
7261
- "cacache": {
7262
- "version": "10.0.4",
7263
- "bundled": true,
7264
- "requires": {
7265
- "bluebird": "3.5.1",
7266
- "chownr": "1.0.1",
7267
- "glob": "7.1.2",
7268
- "graceful-fs": "4.1.11",
7269
- "lru-cache": "4.1.3",
7270
- "mississippi": "2.0.0",
7271
- "mkdirp": "0.5.1",
7272
- "move-concurrently": "1.0.1",
7273
- "promise-inflight": "1.0.1",
7274
- "rimraf": "2.6.2",
7275
- "ssri": "5.3.0",
7276
- "unique-filename": "1.1.0",
7277
- "y18n": "4.0.0"
7278
- },
7279
- "dependencies": {
7280
- "mississippi": {
7281
- "version": "2.0.0",
7282
- "bundled": true,
7283
- "requires": {
7284
- "concat-stream": "1.6.2",
7285
- "duplexify": "3.6.0",
7286
- "end-of-stream": "1.4.1",
7287
- "flush-write-stream": "1.0.3",
7288
- "from2": "2.3.0",
7289
- "parallel-transform": "1.1.0",
7290
- "pump": "2.0.1",
7291
- "pumpify": "1.5.1",
7292
- "stream-each": "1.2.2",
7293
- "through2": "2.0.3"
7294
- }
7295
- }
7296
- }
7297
- },
7298
- "figgy-pudding": {
7299
- "version": "2.0.1",
7300
- "bundled": true
7301
- },
7302
- "make-fetch-happen": {
7303
- "version": "3.0.0",
7304
- "bundled": true,
7305
- "requires": {
7306
- "agentkeepalive": "3.4.1",
7307
- "cacache": "10.0.4",
7308
- "http-cache-semantics": "3.8.1",
7309
- "http-proxy-agent": "2.1.0",
7310
- "https-proxy-agent": "2.2.1",
7311
- "lru-cache": "4.1.3",
7312
- "mississippi": "3.0.0",
7313
- "node-fetch-npm": "2.0.2",
7314
- "promise-retry": "1.1.1",
7315
- "socks-proxy-agent": "3.0.1",
7316
- "ssri": "5.3.0"
7317
- }
7318
- },
7319
- "pump": {
7320
- "version": "2.0.1",
7321
- "bundled": true,
7322
- "requires": {
7323
- "end-of-stream": "1.4.1",
7324
- "once": "1.4.0"
7325
- }
7326
- },
7327
- "smart-buffer": {
7328
- "version": "1.1.15",
7329
- "bundled": true
7330
- },
7331
- "socks": {
7332
- "version": "1.1.10",
7333
- "bundled": true,
7334
- "requires": {
7335
- "ip": "1.1.5",
7336
- "smart-buffer": "1.1.15"
7337
- }
7338
- },
7339
- "socks-proxy-agent": {
7340
- "version": "3.0.1",
7341
- "bundled": true,
7342
- "requires": {
7343
- "agent-base": "4.2.0",
7344
- "socks": "1.1.10"
7345
- }
7346
- },
7347
- "ssri": {
7348
- "version": "5.3.0",
7349
- "bundled": true,
7350
- "requires": {
7351
- "safe-buffer": "5.1.2"
7352
- }
7353
- }
7354
  }
7355
  },
7356
  "npm-run-path": {
@@ -7394,7 +7597,7 @@
7394
  }
7395
  },
7396
  "opener": {
7397
- "version": "1.5.0",
7398
  "bundled": true
7399
  },
7400
  "os-homedir": {
@@ -7451,38 +7654,61 @@
7451
  "got": "6.7.1",
7452
  "registry-auth-token": "3.3.2",
7453
  "registry-url": "3.1.0",
7454
- "semver": "5.5.0"
7455
  }
7456
  },
7457
  "pacote": {
7458
- "version": "8.1.6",
7459
  "bundled": true,
7460
  "requires": {
7461
- "bluebird": "3.5.1",
7462
- "cacache": "11.2.0",
7463
- "get-stream": "3.0.0",
7464
- "glob": "7.1.2",
7465
- "lru-cache": "4.1.3",
 
7466
  "make-fetch-happen": "4.0.1",
7467
  "minimatch": "3.0.4",
7468
- "minipass": "2.3.3",
7469
  "mississippi": "3.0.0",
7470
  "mkdirp": "0.5.1",
7471
- "normalize-package-data": "2.4.0",
7472
  "npm-package-arg": "6.1.0",
7473
- "npm-packlist": "1.1.11",
7474
- "npm-pick-manifest": "2.1.0",
 
7475
  "osenv": "0.1.5",
7476
  "promise-inflight": "1.0.1",
7477
  "promise-retry": "1.1.1",
7478
- "protoduck": "5.0.0",
7479
- "rimraf": "2.6.2",
7480
  "safe-buffer": "5.1.2",
7481
- "semver": "5.5.0",
7482
- "ssri": "6.0.0",
7483
- "tar": "4.4.6",
7484
- "unique-filename": "1.1.0",
7485
  "which": "1.3.1"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7486
  }
7487
  },
7488
  "parallel-transform": {
@@ -7492,6 +7718,28 @@
7492
  "cyclist": "0.2.2",
7493
  "inherits": "2.0.3",
7494
  "readable-stream": "2.3.6"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7495
  }
7496
  },
7497
  "path-exists": {
@@ -7510,6 +7758,10 @@
7510
  "version": "2.0.1",
7511
  "bundled": true
7512
  },
 
 
 
 
7513
  "performance-now": {
7514
  "version": "2.1.0",
7515
  "bundled": true
@@ -7556,10 +7808,10 @@
7556
  "bundled": true
7557
  },
7558
  "protoduck": {
7559
- "version": "5.0.0",
7560
  "bundled": true,
7561
  "requires": {
7562
- "genfun": "4.0.1"
7563
  }
7564
  },
7565
  "prr": {
@@ -7614,7 +7866,7 @@
7614
  "bundled": true
7615
  },
7616
  "query-string": {
7617
- "version": "6.1.0",
7618
  "bundled": true,
7619
  "requires": {
7620
  "decode-uri-component": "0.2.0",
@@ -7652,7 +7904,7 @@
7652
  "version": "1.0.1",
7653
  "bundled": true,
7654
  "requires": {
7655
- "graceful-fs": "4.1.11"
7656
  }
7657
  },
7658
  "read-installed": {
@@ -7660,10 +7912,10 @@
7660
  "bundled": true,
7661
  "requires": {
7662
  "debuglog": "1.0.1",
7663
- "graceful-fs": "4.1.11",
7664
  "read-package-json": "2.0.13",
7665
  "readdir-scoped-modules": "1.0.2",
7666
- "semver": "5.5.0",
7667
  "slide": "1.1.6",
7668
  "util-extend": "1.0.3"
7669
  }
@@ -7672,15 +7924,15 @@
7672
  "version": "2.0.13",
7673
  "bundled": true,
7674
  "requires": {
7675
- "glob": "7.1.2",
7676
- "graceful-fs": "4.1.11",
7677
  "json-parse-better-errors": "1.0.2",
7678
- "normalize-package-data": "2.4.0",
7679
  "slash": "1.0.0"
7680
  }
7681
  },
7682
  "read-package-tree": {
7683
- "version": "5.2.1",
7684
  "bundled": true,
7685
  "requires": {
7686
  "debuglog": "1.0.1",
@@ -7691,15 +7943,11 @@
7691
  }
7692
  },
7693
  "readable-stream": {
7694
- "version": "2.3.6",
7695
  "bundled": true,
7696
  "requires": {
7697
- "core-util-is": "1.0.2",
7698
  "inherits": "2.0.3",
7699
- "isarray": "1.0.0",
7700
- "process-nextick-args": "2.0.0",
7701
- "safe-buffer": "5.1.2",
7702
- "string_decoder": "1.1.1",
7703
  "util-deprecate": "1.0.2"
7704
  }
7705
  },
@@ -7709,7 +7957,7 @@
7709
  "requires": {
7710
  "debuglog": "1.0.1",
7711
  "dezalgo": "1.0.3",
7712
- "graceful-fs": "4.1.11",
7713
  "once": "1.4.0"
7714
  }
7715
  },
@@ -7771,10 +8019,10 @@
7771
  "bundled": true
7772
  },
7773
  "rimraf": {
7774
- "version": "2.6.2",
7775
  "bundled": true,
7776
  "requires": {
7777
- "glob": "7.1.2"
7778
  }
7779
  },
7780
  "run-queue": {
@@ -7782,6 +8030,12 @@
7782
  "bundled": true,
7783
  "requires": {
7784
  "aproba": "1.2.0"
 
 
 
 
 
 
7785
  }
7786
  },
7787
  "safe-buffer": {
@@ -7793,14 +8047,14 @@
7793
  "bundled": true
7794
  },
7795
  "semver": {
7796
- "version": "5.5.0",
7797
  "bundled": true
7798
  },
7799
  "semver-diff": {
7800
  "version": "2.1.0",
7801
  "bundled": true,
7802
  "requires": {
7803
- "semver": "5.5.0"
7804
  }
7805
  },
7806
  "set-blocking": {
@@ -7811,8 +8065,30 @@
7811
  "version": "2.0.1",
7812
  "bundled": true,
7813
  "requires": {
7814
- "graceful-fs": "4.1.11",
7815
  "readable-stream": "2.3.6"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7816
  }
7817
  },
7818
  "shebang-command": {
@@ -7854,7 +8130,7 @@
7854
  "version": "4.0.1",
7855
  "bundled": true,
7856
  "requires": {
7857
- "agent-base": "4.2.0",
7858
  "socks": "2.2.0"
7859
  }
7860
  },
@@ -7903,7 +8179,7 @@
7903
  "bundled": true,
7904
  "requires": {
7905
  "spdx-expression-parse": "3.0.0",
7906
- "spdx-license-ids": "3.0.0"
7907
  }
7908
  },
7909
  "spdx-exceptions": {
@@ -7915,11 +8191,11 @@
7915
  "bundled": true,
7916
  "requires": {
7917
  "spdx-exceptions": "2.1.0",
7918
- "spdx-license-ids": "3.0.0"
7919
  }
7920
  },
7921
  "spdx-license-ids": {
7922
- "version": "3.0.0",
7923
  "bundled": true
7924
  },
7925
  "sshpk": {
@@ -7938,8 +8214,11 @@
7938
  }
7939
  },
7940
  "ssri": {
7941
- "version": "6.0.0",
7942
- "bundled": true
 
 
 
7943
  },
7944
  "stream-each": {
7945
  "version": "1.2.2",
@@ -7955,6 +8234,28 @@
7955
  "requires": {
7956
  "readable-stream": "2.3.6",
7957
  "stream-shift": "1.0.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7958
  }
7959
  },
7960
  "stream-shift": {
@@ -7991,7 +8292,7 @@
7991
  }
7992
  },
7993
  "string_decoder": {
7994
- "version": "1.1.1",
7995
  "bundled": true,
7996
  "requires": {
7997
  "safe-buffer": "5.1.2"
@@ -8024,20 +8325,32 @@
8024
  }
8025
  },
8026
  "tar": {
8027
- "version": "4.4.6",
8028
  "bundled": true,
8029
  "requires": {
8030
- "chownr": "1.0.1",
8031
  "fs-minipass": "1.2.5",
8032
- "minipass": "2.3.3",
8033
- "minizlib": "1.1.0",
8034
  "mkdirp": "0.5.1",
8035
  "safe-buffer": "5.1.2",
8036
- "yallist": "3.0.2"
8037
  },
8038
  "dependencies": {
 
 
 
 
 
 
 
 
 
 
 
 
8039
  "yallist": {
8040
- "version": "3.0.2",
8041
  "bundled": true
8042
  }
8043
  }
@@ -8063,6 +8376,28 @@
8063
  "requires": {
8064
  "readable-stream": "2.3.6",
8065
  "xtend": "4.0.1"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8066
  }
8067
  },
8068
  "timed-out": {
@@ -8106,7 +8441,7 @@
8106
  "bundled": true
8107
  },
8108
  "unique-filename": {
8109
- "version": "1.1.0",
8110
  "bundled": true,
8111
  "requires": {
8112
  "unique-slug": "2.0.0"
@@ -8267,10 +8602,10 @@
8267
  "bundled": true
8268
  },
8269
  "write-file-atomic": {
8270
- "version": "2.3.0",
8271
  "bundled": true,
8272
  "requires": {
8273
- "graceful-fs": "4.1.11",
8274
  "imurmurhash": "0.1.4",
8275
  "signal-exit": "3.0.2"
8276
  }
5629
  "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI="
5630
  },
5631
  "npm": {
5632
+ "version": "6.9.0",
5633
+ "resolved": "https://registry.npmjs.org/npm/-/npm-6.9.0.tgz",
5634
+ "integrity": "sha512-91V+zB5hDxO+Jyp2sUKS7juHlIM95dGQxTeQtmZI1nAI/7kjWXFipPrtwwKjhyKmV4GsS2LzJhrxRjGWsU9z/w==",
5635
  "requires": {
5636
+ "JSONStream": "1.3.5",
5637
  "abbrev": "1.1.1",
5638
  "ansicolors": "0.3.2",
5639
  "ansistyles": "0.1.3",
5640
+ "aproba": "2.0.0",
5641
  "archy": "1.0.0",
5642
  "bin-links": "1.1.2",
5643
+ "bluebird": "3.5.3",
5644
+ "byte-size": "5.0.1",
5645
+ "cacache": "11.3.2",
5646
  "call-limit": "1.1.0",
5647
+ "chownr": "1.1.1",
5648
+ "ci-info": "2.0.0",
5649
  "cli-columns": "3.1.2",
5650
+ "cli-table3": "0.5.1",
5651
  "cmd-shim": "2.0.2",
5652
  "columnify": "1.5.4",
5653
+ "config-chain": "1.1.12",
5654
  "debuglog": "1.0.1",
5655
  "detect-indent": "5.0.0",
5656
  "detect-newline": "2.1.0",
5657
  "dezalgo": "1.0.3",
5658
  "editor": "1.0.0",
5659
+ "figgy-pudding": "3.5.1",
5660
  "find-npm-prefix": "1.0.2",
5661
  "fs-vacuum": "1.2.10",
5662
  "fs-write-stream-atomic": "1.0.10",
5663
  "gentle-fs": "2.0.1",
5664
+ "glob": "7.1.3",
5665
+ "graceful-fs": "4.1.15",
5666
  "has-unicode": "2.0.1",
5667
  "hosted-git-info": "2.7.1",
5668
  "iferr": "1.0.2",
5671
  "inherits": "2.0.3",
5672
  "ini": "1.3.5",
5673
  "init-package-json": "1.10.3",
5674
+ "is-cidr": "3.0.0",
5675
  "json-parse-better-errors": "1.0.2",
5676
  "lazy-property": "1.0.0",
5677
+ "libcipm": "3.0.3",
5678
+ "libnpm": "2.0.1",
5679
+ "libnpmaccess": "3.0.1",
5680
+ "libnpmhook": "5.0.2",
5681
+ "libnpmorg": "1.0.0",
5682
+ "libnpmsearch": "2.0.0",
5683
+ "libnpmteam": "1.0.1",
5684
  "libnpx": "10.2.0",
5685
+ "lock-verify": "2.1.0",
5686
  "lockfile": "1.0.4",
5687
  "lodash._baseindexof": "3.1.0",
5688
  "lodash._baseuniq": "4.6.0",
5695
  "lodash.union": "4.6.0",
5696
  "lodash.uniq": "4.5.0",
5697
  "lodash.without": "4.4.0",
5698
+ "lru-cache": "4.1.5",
5699
  "meant": "1.0.1",
5700
  "mississippi": "3.0.0",
5701
  "mkdirp": "0.5.1",
5702
  "move-concurrently": "1.0.1",
5703
  "node-gyp": "3.8.0",
5704
  "nopt": "4.0.1",
5705
+ "normalize-package-data": "2.5.0",
5706
+ "npm-audit-report": "1.3.2",
5707
  "npm-cache-filename": "1.0.2",
5708
  "npm-install-checks": "3.0.0",
5709
  "npm-lifecycle": "2.1.0",
5710
  "npm-package-arg": "6.1.0",
5711
+ "npm-packlist": "1.4.1",
5712
+ "npm-pick-manifest": "2.2.3",
5713
+ "npm-profile": "4.0.1",
5714
+ "npm-registry-fetch": "3.9.0",
 
5715
  "npm-user-validate": "1.0.0",
5716
  "npmlog": "4.1.2",
5717
  "once": "1.4.0",
5718
+ "opener": "1.5.1",
5719
  "osenv": "0.1.5",
5720
+ "pacote": "9.5.0",
5721
  "path-is-inside": "1.0.2",
5722
  "promise-inflight": "1.0.1",
5723
  "qrcode-terminal": "0.12.0",
5724
+ "query-string": "6.2.0",
5725
  "qw": "1.0.1",
5726
  "read": "1.0.7",
5727
  "read-cmd-shim": "1.0.1",
5728
  "read-installed": "4.0.3",
5729
  "read-package-json": "2.0.13",
5730
+ "read-package-tree": "5.2.2",
5731
+ "readable-stream": "3.1.1",
5732
  "readdir-scoped-modules": "1.0.2",
5733
  "request": "2.88.0",
5734
  "retry": "0.12.0",
5735
+ "rimraf": "2.6.3",
5736
  "safe-buffer": "5.1.2",
5737
+ "semver": "5.6.0",
5738
  "sha": "2.0.1",
5739
  "slide": "1.1.6",
5740
  "sorted-object": "2.0.1",
5741
  "sorted-union-stream": "2.1.3",
5742
+ "ssri": "6.0.1",
5743
  "stringify-package": "1.0.0",
5744
+ "tar": "4.4.8",
5745
  "text-table": "0.2.0",
5746
  "tiny-relative-date": "1.3.0",
5747
  "uid-number": "0.0.6",
5748
  "umask": "1.1.0",
5749
+ "unique-filename": "1.1.1",
5750
  "unpipe": "1.0.0",
5751
  "update-notifier": "2.5.0",
5752
  "uuid": "3.3.2",
5754
  "validate-npm-package-name": "3.0.0",
5755
  "which": "1.3.1",
5756
  "worker-farm": "1.6.0",
5757
+ "write-file-atomic": "2.4.2"
5758
  },
5759
  "dependencies": {
5760
  "JSONStream": {
5761
+ "version": "1.3.5",
5762
  "bundled": true,
5763
  "requires": {
5764
  "jsonparse": "1.3.1",
5770
  "bundled": true
5771
  },
5772
  "agent-base": {
5773
+ "version": "4.2.1",
5774
  "bundled": true,
5775
  "requires": {
5776
  "es6-promisify": "5.0.0"
5820
  "bundled": true
5821
  },
5822
  "aproba": {
5823
+ "version": "2.0.0",
5824
  "bundled": true
5825
  },
5826
  "archy": {
5833
  "requires": {
5834
  "delegates": "1.0.0",
5835
  "readable-stream": "2.3.6"
5836
+ },
5837
+ "dependencies": {
5838
+ "readable-stream": {
5839
+ "version": "2.3.6",
5840
+ "bundled": true,
5841
+ "requires": {
5842
+ "core-util-is": "1.0.2",
5843
+ "inherits": "2.0.3",
5844
+ "isarray": "1.0.0",
5845
+ "process-nextick-args": "2.0.0",
5846
+ "safe-buffer": "5.1.2",
5847
+ "string_decoder": "1.1.1",
5848
+ "util-deprecate": "1.0.2"
5849
+ }
5850
+ },
5851
+ "string_decoder": {
5852
+ "version": "1.1.1",
5853
+ "bundled": true,
5854
+ "requires": {
5855
+ "safe-buffer": "5.1.2"
5856
+ }
5857
+ }
5858
  }
5859
  },
5860
  "asap": {
5900
  "version": "1.1.2",
5901
  "bundled": true,
5902
  "requires": {
5903
+ "bluebird": "3.5.3",
5904
  "cmd-shim": "2.0.2",
5905
  "gentle-fs": "2.0.1",
5906
+ "graceful-fs": "4.1.15",
5907
+ "write-file-atomic": "2.4.2"
5908
  }
5909
  },
5910
  "block-stream": {
5915
  }
5916
  },
5917
  "bluebird": {
5918
+ "version": "3.5.3",
5919
  "bundled": true
5920
  },
5921
  "boxen": {
5943
  "version": "1.0.0",
5944
  "bundled": true
5945
  },
 
 
 
 
5946
  "builtins": {
5947
  "version": "1.0.3",
5948
  "bundled": true
5952
  "bundled": true
5953
  },
5954
  "byte-size": {
5955
+ "version": "5.0.1",
5956
  "bundled": true
5957
  },
5958
  "cacache": {
5959
+ "version": "11.3.2",
5960
  "bundled": true,
5961
  "requires": {
5962
+ "bluebird": "3.5.3",
5963
+ "chownr": "1.1.1",
5964
+ "figgy-pudding": "3.5.1",
5965
+ "glob": "7.1.3",
5966
+ "graceful-fs": "4.1.15",
5967
+ "lru-cache": "5.1.1",
5968
  "mississippi": "3.0.0",
5969
  "mkdirp": "0.5.1",
5970
  "move-concurrently": "1.0.1",
5971
  "promise-inflight": "1.0.1",
5972
+ "rimraf": "2.6.3",
5973
+ "ssri": "6.0.1",
5974
+ "unique-filename": "1.1.1",
5975
  "y18n": "4.0.0"
5976
+ },
5977
+ "dependencies": {
5978
+ "chownr": {
5979
+ "version": "1.1.1",
5980
+ "bundled": true
5981
+ },
5982
+ "lru-cache": {
5983
+ "version": "5.1.1",
5984
+ "bundled": true,
5985
+ "requires": {
5986
+ "yallist": "3.0.3"
5987
+ }
5988
+ },
5989
+ "unique-filename": {
5990
+ "version": "1.1.1",
5991
+ "bundled": true,
5992
+ "requires": {
5993
+ "unique-slug": "2.0.0"
5994
+ }
5995
+ },
5996
+ "yallist": {
5997
+ "version": "3.0.3",
5998
+ "bundled": true
5999
+ }
6000
  }
6001
  },
6002
  "call-limit": {
6025
  }
6026
  },
6027
  "chownr": {
6028
+ "version": "1.1.1",
6029
  "bundled": true
6030
  },
6031
  "ci-info": {
6032
+ "version": "2.0.0",
6033
  "bundled": true
6034
  },
6035
  "cidr-regex": {
6036
+ "version": "2.0.10",
6037
  "bundled": true,
6038
  "requires": {
6039
  "ip-regex": "2.1.0"
6052
  }
6053
  },
6054
  "cli-table3": {
6055
+ "version": "0.5.1",
6056
  "bundled": true,
6057
  "requires": {
6058
+ "colors": "1.3.3",
6059
  "object-assign": "4.1.1",
6060
  "string-width": "2.1.1"
6061
  }
6090
  "version": "2.0.2",
6091
  "bundled": true,
6092
  "requires": {
6093
+ "graceful-fs": "4.1.15",
6094
  "mkdirp": "0.5.1"
6095
  }
6096
  },
6114
  "bundled": true
6115
  },
6116
  "colors": {
6117
+ "version": "1.3.3",
6118
  "bundled": true,
6119
  "optional": true
6120
  },
6145
  "inherits": "2.0.3",
6146
  "readable-stream": "2.3.6",
6147
  "typedarray": "0.0.6"
6148
+ },
6149
+ "dependencies": {
6150
+ "readable-stream": {
6151
+ "version": "2.3.6",
6152
+ "bundled": true,
6153
+ "requires": {
6154
+ "core-util-is": "1.0.2",
6155
+ "inherits": "2.0.3",
6156
+ "isarray": "1.0.0",
6157
+ "process-nextick-args": "2.0.0",
6158
+ "safe-buffer": "5.1.2",
6159
+ "string_decoder": "1.1.1",
6160
+ "util-deprecate": "1.0.2"
6161
+ }
6162
+ },
6163
+ "string_decoder": {
6164
+ "version": "1.1.1",
6165
+ "bundled": true,
6166
+ "requires": {
6167
+ "safe-buffer": "5.1.2"
6168
+ }
6169
+ }
6170
  }
6171
  },
6172
  "config-chain": {
6173
+ "version": "1.1.12",
6174
  "bundled": true,
6175
  "requires": {
6176
  "ini": "1.3.5",
6182
  "bundled": true,
6183
  "requires": {
6184
  "dot-prop": "4.2.0",
6185
+ "graceful-fs": "4.1.15",
6186
  "make-dir": "1.3.0",
6187
  "unique-string": "1.0.0",
6188
+ "write-file-atomic": "2.4.2",
6189
  "xdg-basedir": "3.0.0"
6190
  }
6191
  },
6201
  "fs-write-stream-atomic": "1.0.10",
6202
  "iferr": "0.1.5",
6203
  "mkdirp": "0.5.1",
6204
+ "rimraf": "2.6.3",
6205
  "run-queue": "1.0.3"
6206
  },
6207
  "dependencies": {
6208
+ "aproba": {
6209
+ "version": "1.2.0",
6210
+ "bundled": true
6211
+ },
6212
  "iferr": {
6213
  "version": "0.1.5",
6214
  "bundled": true
6230
  "version": "5.1.0",
6231
  "bundled": true,
6232
  "requires": {
6233
+ "lru-cache": "4.1.5",
6234
  "shebang-command": "1.2.0",
6235
  "which": "1.3.1"
6236
  }
6333
  "inherits": "2.0.3",
6334
  "readable-stream": "2.3.6",
6335
  "stream-shift": "1.0.0"
6336
+ },
6337
+ "dependencies": {
6338
+ "readable-stream": {
6339
+ "version": "2.3.6",
6340
+ "bundled": true,
6341
+ "requires": {
6342
+ "core-util-is": "1.0.2",
6343
+ "inherits": "2.0.3",
6344
+ "isarray": "1.0.0",
6345
+ "process-nextick-args": "2.0.0",
6346
+ "safe-buffer": "5.1.2",
6347
+ "string_decoder": "1.1.1",
6348
+ "util-deprecate": "1.0.2"
6349
+ }
6350
+ },
6351
+ "string_decoder": {
6352
+ "version": "1.1.1",
6353
+ "bundled": true,
6354
+ "requires": {
6355
+ "safe-buffer": "5.1.2"
6356
+ }
6357
+ }
6358
  }
6359
  },
6360
  "ecc-jsbn": {
6396
  }
6397
  },
6398
  "es6-promise": {
6399
+ "version": "4.2.6",
6400
  "bundled": true
6401
  },
6402
  "es6-promisify": {
6403
  "version": "5.0.0",
6404
  "bundled": true,
6405
  "requires": {
6406
+ "es6-promise": "4.2.6"
6407
  }
6408
  },
6409
  "escape-string-regexp": {
6421
  "p-finally": "1.0.0",
6422
  "signal-exit": "3.0.2",
6423
  "strip-eof": "1.0.0"
6424
+ },
6425
+ "dependencies": {
6426
+ "get-stream": {
6427
+ "version": "3.0.0",
6428
+ "bundled": true
6429
+ }
6430
  }
6431
  },
6432
  "extend": {
6446
  "bundled": true
6447
  },
6448
  "figgy-pudding": {
6449
+ "version": "3.5.1",
6450
  "bundled": true
6451
  },
6452
  "find-npm-prefix": {
6466
  "requires": {
6467
  "inherits": "2.0.3",
6468
  "readable-stream": "2.3.6"
6469
+ },
6470
+ "dependencies": {
6471
+ "readable-stream": {
6472
+ "version": "2.3.6",
6473
+ "bundled": true,
6474
+ "requires": {
6475
+ "core-util-is": "1.0.2",
6476
+ "inherits": "2.0.3",
6477
+ "isarray": "1.0.0",
6478
+ "process-nextick-args": "2.0.0",
6479
+ "safe-buffer": "5.1.2",
6480
+ "string_decoder": "1.1.1",
6481
+ "util-deprecate": "1.0.2"
6482
+ }
6483
+ },
6484
+ "string_decoder": {
6485
+ "version": "1.1.1",
6486
+ "bundled": true,
6487
+ "requires": {
6488
+ "safe-buffer": "5.1.2"
6489
+ }
6490
+ }
6491
  }
6492
  },
6493
  "forever-agent": {
6509
  "requires": {
6510
  "inherits": "2.0.3",
6511
  "readable-stream": "2.3.6"
6512
+ },
6513
+ "dependencies": {
6514
+ "readable-stream": {
6515
+ "version": "2.3.6",
6516
+ "bundled": true,
6517
+ "requires": {
6518
+ "core-util-is": "1.0.2",
6519
+ "inherits": "2.0.3",
6520
+ "isarray": "1.0.0",
6521
+ "process-nextick-args": "2.0.0",
6522
+ "safe-buffer": "5.1.2",
6523
+ "string_decoder": "1.1.1",
6524
+ "util-deprecate": "1.0.2"
6525
+ }
6526
+ },
6527
+ "string_decoder": {
6528
+ "version": "1.1.1",
6529
+ "bundled": true,
6530
+ "requires": {
6531
+ "safe-buffer": "5.1.2"
6532
+ }
6533
+ }
6534
  }
6535
  },
6536
  "fs-minipass": {
6544
  "version": "1.2.10",
6545
  "bundled": true,
6546
  "requires": {
6547
+ "graceful-fs": "4.1.15",
6548
  "path-is-inside": "1.0.2",
6549
+ "rimraf": "2.6.3"
6550
  }
6551
  },
6552
  "fs-write-stream-atomic": {
6553
  "version": "1.0.10",
6554
  "bundled": true,
6555
  "requires": {
6556
+ "graceful-fs": "4.1.15",
6557
  "iferr": "0.1.5",
6558
  "imurmurhash": "0.1.4",
6559
  "readable-stream": "2.3.6"
6562
  "iferr": {
6563
  "version": "0.1.5",
6564
  "bundled": true
6565
+ },
6566
+ "readable-stream": {
6567
+ "version": "2.3.6",
6568
+ "bundled": true,
6569
+ "requires": {
6570
+ "core-util-is": "1.0.2",
6571
+ "inherits": "2.0.3",
6572
+ "isarray": "1.0.0",
6573
+ "process-nextick-args": "2.0.0",
6574
+ "safe-buffer": "5.1.2",
6575
+ "string_decoder": "1.1.1",
6576
+ "util-deprecate": "1.0.2"
6577
+ }
6578
+ },
6579
+ "string_decoder": {
6580
+ "version": "1.1.1",
6581
+ "bundled": true,
6582
+ "requires": {
6583
+ "safe-buffer": "5.1.2"
6584
+ }
6585
  }
6586
  }
6587
  },
6593
  "version": "1.0.11",
6594
  "bundled": true,
6595
  "requires": {
6596
+ "graceful-fs": "4.1.15",
6597
  "inherits": "2.0.3",
6598
  "mkdirp": "0.5.1",
6599
+ "rimraf": "2.6.3"
6600
  }
6601
  },
6602
  "gauge": {
6613
  "wide-align": "1.1.2"
6614
  },
6615
  "dependencies": {
6616
+ "aproba": {
6617
+ "version": "1.2.0",
6618
+ "bundled": true
6619
+ },
6620
  "string-width": {
6621
  "version": "1.0.2",
6622
  "bundled": true,
6629
  }
6630
  },
6631
  "genfun": {
6632
+ "version": "5.0.0",
6633
  "bundled": true
6634
  },
6635
  "gentle-fs": {
6638
  "requires": {
6639
  "aproba": "1.2.0",
6640
  "fs-vacuum": "1.2.10",
6641
+ "graceful-fs": "4.1.15",
6642
  "iferr": "0.1.5",
6643
  "mkdirp": "0.5.1",
6644
  "path-is-inside": "1.0.2",
6646
  "slide": "1.1.6"
6647
  },
6648
  "dependencies": {
6649
+ "aproba": {
6650
+ "version": "1.2.0",
6651
+ "bundled": true
6652
+ },
6653
  "iferr": {
6654
  "version": "0.1.5",
6655
  "bundled": true
6661
  "bundled": true
6662
  },
6663
  "get-stream": {
6664
+ "version": "4.1.0",
6665
+ "bundled": true,
6666
+ "requires": {
6667
+ "pump": "3.0.0"
6668
+ }
6669
  },
6670
  "getpass": {
6671
  "version": "0.1.7",
6675
  }
6676
  },
6677
  "glob": {
6678
+ "version": "7.1.3",
6679
  "bundled": true,
6680
  "requires": {
6681
  "fs.realpath": "1.0.0",
6708
  "timed-out": "4.0.1",
6709
  "unzip-response": "2.0.1",
6710
  "url-parse-lax": "1.0.0"
6711
+ },
6712
+ "dependencies": {
6713
+ "get-stream": {
6714
+ "version": "3.0.0",
6715
+ "bundled": true
6716
+ }
6717
  }
6718
  },
6719
  "graceful-fs": {
6720
+ "version": "4.1.15",
6721
  "bundled": true
6722
  },
6723
  "har-schema": {
6752
  "version": "2.1.0",
6753
  "bundled": true,
6754
  "requires": {
6755
+ "agent-base": "4.2.1",
6756
  "debug": "3.1.0"
6757
  }
6758
  },
6769
  "version": "2.2.1",
6770
  "bundled": true,
6771
  "requires": {
6772
+ "agent-base": "4.2.1",
6773
  "debug": "3.1.0"
6774
  }
6775
  },
6826
  "version": "1.10.3",
6827
  "bundled": true,
6828
  "requires": {
6829
+ "glob": "7.1.3",
6830
  "npm-package-arg": "6.1.0",
6831
  "promzard": "0.3.0",
6832
  "read": "1.0.7",
6833
  "read-package-json": "2.0.13",
6834
+ "semver": "5.6.0",
6835
  "validate-npm-package-license": "3.0.4",
6836
  "validate-npm-package-name": "3.0.0"
6837
  }
6848
  "version": "2.1.0",
6849
  "bundled": true
6850
  },
 
 
 
 
 
 
 
6851
  "is-ci": {
6852
  "version": "1.1.0",
6853
  "bundled": true,
6854
  "requires": {
6855
+ "ci-info": "1.6.0"
6856
+ },
6857
+ "dependencies": {
6858
+ "ci-info": {
6859
+ "version": "1.6.0",
6860
+ "bundled": true
6861
+ }
6862
  }
6863
  },
6864
  "is-cidr": {
6865
+ "version": "3.0.0",
6866
  "bundled": true,
6867
  "requires": {
6868
+ "cidr-regex": "2.0.10"
6869
  }
6870
  },
6871
  "is-fullwidth-code-point": {
6980
  }
6981
  },
6982
  "libcipm": {
6983
+ "version": "3.0.3",
6984
  "bundled": true,
6985
  "requires": {
6986
  "bin-links": "1.1.2",
6987
+ "bluebird": "3.5.3",
6988
+ "figgy-pudding": "3.5.1",
6989
  "find-npm-prefix": "1.0.2",
6990
+ "graceful-fs": "4.1.15",
6991
+ "ini": "1.3.5",
6992
+ "lock-verify": "2.1.0",
6993
  "mkdirp": "0.5.1",
6994
  "npm-lifecycle": "2.1.0",
6995
  "npm-logical-tree": "1.2.1",
6996
  "npm-package-arg": "6.1.0",
6997
+ "pacote": "9.5.0",
 
6998
  "read-package-json": "2.0.13",
6999
+ "rimraf": "2.6.3",
7000
  "worker-farm": "1.6.0"
7001
  }
7002
  },
7003
+ "libnpm": {
7004
+ "version": "2.0.1",
7005
+ "bundled": true,
7006
+ "requires": {
7007
+ "bin-links": "1.1.2",
7008
+ "bluebird": "3.5.3",
7009
+ "find-npm-prefix": "1.0.2",
7010
+ "libnpmaccess": "3.0.1",
7011
+ "libnpmconfig": "1.2.1",
7012
+ "libnpmhook": "5.0.2",
7013
+ "libnpmorg": "1.0.0",
7014
+ "libnpmpublish": "1.1.1",
7015
+ "libnpmsearch": "2.0.0",
7016
+ "libnpmteam": "1.0.1",
7017
+ "lock-verify": "2.1.0",
7018
+ "npm-lifecycle": "2.1.0",
7019
+ "npm-logical-tree": "1.2.1",
7020
+ "npm-package-arg": "6.1.0",
7021
+ "npm-profile": "4.0.1",
7022
+ "npm-registry-fetch": "3.9.0",
7023
+ "npmlog": "4.1.2",
7024
+ "pacote": "9.5.0",
7025
+ "read-package-json": "2.0.13",
7026
+ "stringify-package": "1.0.0"
7027
+ }
7028
+ },
7029
+ "libnpmaccess": {
7030
+ "version": "3.0.1",
7031
+ "bundled": true,
7032
+ "requires": {
7033
+ "aproba": "2.0.0",
7034
+ "get-stream": "4.1.0",
7035
+ "npm-package-arg": "6.1.0",
7036
+ "npm-registry-fetch": "3.9.0"
7037
+ },
7038
+ "dependencies": {
7039
+ "aproba": {
7040
+ "version": "2.0.0",
7041
+ "bundled": true
7042
+ }
7043
+ }
7044
+ },
7045
+ "libnpmconfig": {
7046
+ "version": "1.2.1",
7047
  "bundled": true,
7048
  "requires": {
7049
+ "figgy-pudding": "3.5.1",
7050
+ "find-up": "3.0.0",
7051
+ "ini": "1.3.5"
7052
  },
7053
  "dependencies": {
7054
+ "find-up": {
7055
+ "version": "3.0.0",
7056
+ "bundled": true,
7057
+ "requires": {
7058
+ "locate-path": "3.0.0"
7059
+ }
7060
+ },
7061
+ "locate-path": {
7062
+ "version": "3.0.0",
7063
  "bundled": true,
7064
  "requires": {
7065
+ "p-locate": "3.0.0",
7066
+ "path-exists": "3.0.0"
 
 
 
7067
  }
7068
+ },
7069
+ "p-limit": {
7070
+ "version": "2.1.0",
7071
+ "bundled": true,
7072
+ "requires": {
7073
+ "p-try": "2.0.0"
7074
+ }
7075
+ },
7076
+ "p-locate": {
7077
+ "version": "3.0.0",
7078
+ "bundled": true,
7079
+ "requires": {
7080
+ "p-limit": "2.1.0"
7081
+ }
7082
+ },
7083
+ "p-try": {
7084
+ "version": "2.0.0",
7085
+ "bundled": true
7086
+ }
7087
+ }
7088
+ },
7089
+ "libnpmhook": {
7090
+ "version": "5.0.2",
7091
+ "bundled": true,
7092
+ "requires": {
7093
+ "aproba": "2.0.0",
7094
+ "figgy-pudding": "3.5.1",
7095
+ "get-stream": "4.1.0",
7096
+ "npm-registry-fetch": "3.9.0"
7097
+ }
7098
+ },
7099
+ "libnpmorg": {
7100
+ "version": "1.0.0",
7101
+ "bundled": true,
7102
+ "requires": {
7103
+ "aproba": "2.0.0",
7104
+ "figgy-pudding": "3.5.1",
7105
+ "get-stream": "4.1.0",
7106
+ "npm-registry-fetch": "3.9.0"
7107
+ },
7108
+ "dependencies": {
7109
+ "aproba": {
7110
+ "version": "2.0.0",
7111
+ "bundled": true
7112
+ }
7113
+ }
7114
+ },
7115
+ "libnpmpublish": {
7116
+ "version": "1.1.1",
7117
+ "bundled": true,
7118
+ "requires": {
7119
+ "aproba": "2.0.0",
7120
+ "figgy-pudding": "3.5.1",
7121
+ "get-stream": "4.1.0",
7122
+ "lodash.clonedeep": "4.5.0",
7123
+ "normalize-package-data": "2.5.0",
7124
+ "npm-package-arg": "6.1.0",
7125
+ "npm-registry-fetch": "3.9.0",
7126
+ "semver": "5.6.0",
7127
+ "ssri": "6.0.1"
7128
+ }
7129
+ },
7130
+ "libnpmsearch": {
7131
+ "version": "2.0.0",
7132
+ "bundled": true,
7133
+ "requires": {
7134
+ "figgy-pudding": "3.5.1",
7135
+ "get-stream": "4.1.0",
7136
+ "npm-registry-fetch": "3.9.0"
7137
+ }
7138
+ },
7139
+ "libnpmteam": {
7140
+ "version": "1.0.1",
7141
+ "bundled": true,
7142
+ "requires": {
7143
+ "aproba": "2.0.0",
7144
+ "figgy-pudding": "3.5.1",
7145
+ "get-stream": "4.1.0",
7146
+ "npm-registry-fetch": "3.9.0"
7147
+ },
7148
+ "dependencies": {
7149
+ "aproba": {
7150
+ "version": "2.0.0",
7151
+ "bundled": true
7152
  }
7153
  }
7154
  },
7158
  "requires": {
7159
  "dotenv": "5.0.1",
7160
  "npm-package-arg": "6.1.0",
7161
+ "rimraf": "2.6.3",
7162
  "safe-buffer": "5.1.2",
7163
  "update-notifier": "2.5.0",
7164
  "which": "1.3.1",
7175
  }
7176
  },
7177
  "lock-verify": {
7178
+ "version": "2.1.0",
7179
  "bundled": true,
7180
  "requires": {
7181
  "npm-package-arg": "6.1.0",
7182
+ "semver": "5.6.0"
7183
  }
7184
  },
7185
  "lockfile": {
7253
  "bundled": true
7254
  },
7255
  "lru-cache": {
7256
+ "version": "4.1.5",
7257
  "bundled": true,
7258
  "requires": {
7259
  "pseudomap": "1.0.2",
7272
  "bundled": true,
7273
  "requires": {
7274
  "agentkeepalive": "3.4.1",
7275
+ "cacache": "11.3.2",
7276
  "http-cache-semantics": "3.8.1",
7277
  "http-proxy-agent": "2.1.0",
7278
  "https-proxy-agent": "2.2.1",
7279
+ "lru-cache": "4.1.5",
7280
  "mississippi": "3.0.0",
7281
  "node-fetch-npm": "2.0.2",
7282
  "promise-retry": "1.1.1",
7283
  "socks-proxy-agent": "4.0.1",
7284
+ "ssri": "6.0.1"
7285
  }
7286
  },
7287
  "meant": {
7336
  }
7337
  },
7338
  "minizlib": {
7339
+ "version": "1.1.1",
7340
  "bundled": true,
7341
  "requires": {
7342
  "minipass": "2.3.3"
7373
  "copy-concurrently": "1.0.5",
7374
  "fs-write-stream-atomic": "1.0.10",
7375
  "mkdirp": "0.5.1",
7376
+ "rimraf": "2.6.3",
7377
  "run-queue": "1.0.3"
7378
+ },
7379
+ "dependencies": {
7380
+ "aproba": {
7381
+ "version": "1.2.0",
7382
+ "bundled": true
7383
+ }
7384
  }
7385
  },
7386
  "ms": {
7405
  "bundled": true,
7406
  "requires": {
7407
  "fstream": "1.0.11",
7408
+ "glob": "7.1.3",
7409
+ "graceful-fs": "4.1.15",
7410
  "mkdirp": "0.5.1",
7411
  "nopt": "3.0.6",
7412
  "npmlog": "4.1.2",
7413
  "osenv": "0.1.5",
7414
  "request": "2.88.0",
7415
+ "rimraf": "2.6.3",
7416
  "semver": "5.3.0",
7417
  "tar": "2.2.1",
7418
  "which": "1.3.1"
7449
  }
7450
  },
7451
  "normalize-package-data": {
7452
+ "version": "2.5.0",
7453
  "bundled": true,
7454
  "requires": {
7455
  "hosted-git-info": "2.7.1",
7456
+ "resolve": "1.10.0",
7457
+ "semver": "5.6.0",
7458
  "validate-npm-package-license": "3.0.4"
7459
+ },
7460
+ "dependencies": {
7461
+ "resolve": {
7462
+ "version": "1.10.0",
7463
+ "bundled": true,
7464
+ "requires": {
7465
+ "path-parse": "1.0.6"
7466
+ }
7467
+ }
7468
  }
7469
  },
7470
  "npm-audit-report": {
7471
+ "version": "1.3.2",
7472
  "bundled": true,
7473
  "requires": {
7474
+ "cli-table3": "0.5.1",
7475
  "console-control-strings": "1.1.0"
7476
  }
7477
  },
7478
  "npm-bundled": {
7479
+ "version": "1.0.6",
7480
  "bundled": true
7481
  },
7482
  "npm-cache-filename": {
7487
  "version": "3.0.0",
7488
  "bundled": true,
7489
  "requires": {
7490
+ "semver": "5.6.0"
7491
  }
7492
  },
7493
  "npm-lifecycle": {
7495
  "bundled": true,
7496
  "requires": {
7497
  "byline": "5.0.0",
7498
+ "graceful-fs": "4.1.15",
7499
  "node-gyp": "3.8.0",
7500
  "resolve-from": "4.0.0",
7501
  "slide": "1.1.6",
7514
  "requires": {
7515
  "hosted-git-info": "2.7.1",
7516
  "osenv": "0.1.5",
7517
+ "semver": "5.6.0",
7518
  "validate-npm-package-name": "3.0.0"
7519
  }
7520
  },
7521
  "npm-packlist": {
7522
+ "version": "1.4.1",
7523
  "bundled": true,
7524
  "requires": {
7525
  "ignore-walk": "3.0.1",
7526
+ "npm-bundled": "1.0.6"
7527
  }
7528
  },
7529
  "npm-pick-manifest": {
7530
+ "version": "2.2.3",
7531
  "bundled": true,
7532
  "requires": {
7533
+ "figgy-pudding": "3.5.1",
7534
  "npm-package-arg": "6.1.0",
7535
+ "semver": "5.6.0"
7536
  }
7537
  },
7538
  "npm-profile": {
7539
+ "version": "4.0.1",
7540
  "bundled": true,
7541
  "requires": {
7542
+ "aproba": "2.0.0",
7543
+ "figgy-pudding": "3.5.1",
7544
+ "npm-registry-fetch": "3.9.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7545
  }
7546
  },
7547
  "npm-registry-fetch": {
7548
+ "version": "3.9.0",
7549
  "bundled": true,
7550
  "requires": {
7551
+ "JSONStream": "1.3.5",
7552
+ "bluebird": "3.5.3",
7553
+ "figgy-pudding": "3.5.1",
7554
+ "lru-cache": "4.1.5",
7555
+ "make-fetch-happen": "4.0.1",
7556
+ "npm-package-arg": "6.1.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7557
  }
7558
  },
7559
  "npm-run-path": {
7597
  }
7598
  },
7599
  "opener": {
7600
+ "version": "1.5.1",
7601
  "bundled": true
7602
  },
7603
  "os-homedir": {
7654
  "got": "6.7.1",
7655
  "registry-auth-token": "3.3.2",
7656
  "registry-url": "3.1.0",
7657
+ "semver": "5.6.0"
7658
  }
7659
  },
7660
  "pacote": {
7661
+ "version": "9.5.0",
7662
  "bundled": true,
7663
  "requires": {
7664
+ "bluebird": "3.5.3",
7665
+ "cacache": "11.3.2",
7666
+ "figgy-pudding": "3.5.1",
7667
+ "get-stream": "4.1.0",
7668
+ "glob": "7.1.3",
7669
+ "lru-cache": "5.1.1",
7670
  "make-fetch-happen": "4.0.1",
7671
  "minimatch": "3.0.4",
7672
+ "minipass": "2.3.5",
7673
  "mississippi": "3.0.0",
7674
  "mkdirp": "0.5.1",
7675
+ "normalize-package-data": "2.5.0",
7676
  "npm-package-arg": "6.1.0",
7677
+ "npm-packlist": "1.4.1",
7678
+ "npm-pick-manifest": "2.2.3",
7679
+ "npm-registry-fetch": "3.9.0",
7680
  "osenv": "0.1.5",
7681
  "promise-inflight": "1.0.1",
7682
  "promise-retry": "1.1.1",
7683
+ "protoduck": "5.0.1",
7684
+ "rimraf": "2.6.3",
7685
  "safe-buffer": "5.1.2",
7686
+ "semver": "5.6.0",
7687
+ "ssri": "6.0.1",
7688
+ "tar": "4.4.8",
7689
+ "unique-filename": "1.1.1",
7690
  "which": "1.3.1"
7691
+ },
7692
+ "dependencies": {
7693
+ "lru-cache": {
7694
+ "version": "5.1.1",
7695
+ "bundled": true,
7696
+ "requires": {
7697
+ "yallist": "3.0.3"
7698
+ }
7699
+ },
7700
+ "minipass": {
7701
+ "version": "2.3.5",
7702
+ "bundled": true,
7703
+ "requires": {
7704
+ "safe-buffer": "5.1.2",
7705
+ "yallist": "3.0.3"
7706
+ }
7707
+ },
7708
+ "yallist": {
7709
+ "version": "3.0.3",
7710
+ "bundled": true
7711
+ }
7712
  }
7713
  },
7714
  "parallel-transform": {
7718
  "cyclist": "0.2.2",
7719
  "inherits": "2.0.3",
7720
  "readable-stream": "2.3.6"
7721
+ },
7722
+ "dependencies": {
7723
+ "readable-stream": {
7724
+ "version": "2.3.6",
7725
+ "bundled": true,
7726
+ "requires": {
7727
+ "core-util-is": "1.0.2",
7728
+ "inherits": "2.0.3",
7729
+ "isarray": "1.0.0",
7730
+ "process-nextick-args": "2.0.0",
7731
+ "safe-buffer": "5.1.2",
7732
+ "string_decoder": "1.1.1",
7733
+ "util-deprecate": "1.0.2"
7734
+ }
7735
+ },
7736
+ "string_decoder": {
7737
+ "version": "1.1.1",
7738
+ "bundled": true,
7739
+ "requires": {
7740
+ "safe-buffer": "5.1.2"
7741
+ }
7742
+ }
7743
  }
7744
  },
7745
  "path-exists": {
7758
  "version": "2.0.1",
7759
  "bundled": true
7760
  },
7761
+ "path-parse": {
7762
+ "version": "1.0.6",
7763
+ "bundled": true
7764
+ },
7765
  "performance-now": {
7766
  "version": "2.1.0",
7767
  "bundled": true
7808
  "bundled": true
7809
  },
7810
  "protoduck": {
7811
+ "version": "5.0.1",
7812
  "bundled": true,
7813
  "requires": {
7814
+ "genfun": "5.0.0"
7815
  }
7816
  },
7817
  "prr": {
7866
  "bundled": true
7867
  },
7868
  "query-string": {
7869
+ "version": "6.2.0",
7870
  "bundled": true,
7871
  "requires": {
7872
  "decode-uri-component": "0.2.0",
7904
  "version": "1.0.1",
7905
  "bundled": true,
7906
  "requires": {
7907
+ "graceful-fs": "4.1.15"
7908
  }
7909
  },
7910
  "read-installed": {
7912
  "bundled": true,
7913
  "requires": {
7914
  "debuglog": "1.0.1",
7915
+ "graceful-fs": "4.1.15",
7916
  "read-package-json": "2.0.13",
7917
  "readdir-scoped-modules": "1.0.2",
7918
+ "semver": "5.6.0",
7919
  "slide": "1.1.6",
7920
  "util-extend": "1.0.3"
7921
  }
7924
  "version": "2.0.13",
7925
  "bundled": true,
7926
  "requires": {
7927
+ "glob": "7.1.3",
7928
+ "graceful-fs": "4.1.15",
7929
  "json-parse-better-errors": "1.0.2",
7930
+ "normalize-package-data": "2.5.0",
7931
  "slash": "1.0.0"
7932
  }
7933
  },
7934
  "read-package-tree": {
7935
+ "version": "5.2.2",
7936
  "bundled": true,
7937
  "requires": {
7938
  "debuglog": "1.0.1",
7943
  }
7944
  },
7945
  "readable-stream": {
7946
+ "version": "3.1.1",
7947
  "bundled": true,
7948
  "requires": {
 
7949
  "inherits": "2.0.3",
7950
+ "string_decoder": "1.2.0",
 
 
 
7951
  "util-deprecate": "1.0.2"
7952
  }
7953
  },
7957
  "requires": {
7958
  "debuglog": "1.0.1",
7959
  "dezalgo": "1.0.3",
7960
+ "graceful-fs": "4.1.15",
7961
  "once": "1.4.0"
7962
  }
7963
  },
8019
  "bundled": true
8020
  },
8021
  "rimraf": {
8022
+ "version": "2.6.3",
8023
  "bundled": true,
8024
  "requires": {
8025
+ "glob": "7.1.3"
8026
  }
8027
  },
8028
  "run-queue": {
8030
  "bundled": true,
8031
  "requires": {
8032
  "aproba": "1.2.0"
8033
+ },
8034
+ "dependencies": {
8035
+ "aproba": {
8036
+ "version": "1.2.0",
8037
+ "bundled": true
8038
+ }
8039
  }
8040
  },
8041
  "safe-buffer": {
8047
  "bundled": true
8048
  },
8049
  "semver": {
8050
+ "version": "5.6.0",
8051
  "bundled": true
8052
  },
8053
  "semver-diff": {
8054
  "version": "2.1.0",
8055
  "bundled": true,
8056
  "requires": {
8057
+ "semver": "5.6.0"
8058
  }
8059
  },
8060
  "set-blocking": {
8065
  "version": "2.0.1",
8066
  "bundled": true,
8067
  "requires": {
8068
+ "graceful-fs": "4.1.15",
8069
  "readable-stream": "2.3.6"
8070
+ },
8071
+ "dependencies": {
8072
+ "readable-stream": {
8073
+ "version": "2.3.6",
8074
+ "bundled": true,
8075
+ "requires": {
8076
+ "core-util-is": "1.0.2",
8077
+ "inherits": "2.0.3",
8078
+ "isarray": "1.0.0",
8079
+ "process-nextick-args": "2.0.0",
8080
+ "safe-buffer": "5.1.2",
8081
+ "string_decoder": "1.1.1",
8082
+ "util-deprecate": "1.0.2"
8083
+ }
8084
+ },
8085
+ "string_decoder": {
8086
+ "version": "1.1.1",
8087
+ "bundled": true,
8088
+ "requires": {
8089
+ "safe-buffer": "5.1.2"
8090
+ }
8091
+ }
8092
  }
8093
  },
8094
  "shebang-command": {
8130
  "version": "4.0.1",
8131
  "bundled": true,
8132
  "requires": {
8133
+ "agent-base": "4.2.1",
8134
  "socks": "2.2.0"
8135
  }
8136
  },
8179
  "bundled": true,
8180
  "requires": {
8181
  "spdx-expression-parse": "3.0.0",
8182
+ "spdx-license-ids": "3.0.3"
8183
  }
8184
  },
8185
  "spdx-exceptions": {
8191
  "bundled": true,
8192
  "requires": {
8193
  "spdx-exceptions": "2.1.0",
8194
+ "spdx-license-ids": "3.0.3"
8195
  }
8196
  },
8197
  "spdx-license-ids": {
8198
+ "version": "3.0.3",
8199
  "bundled": true
8200
  },
8201
  "sshpk": {
8214
  }
8215
  },
8216
  "ssri": {
8217
+ "version": "6.0.1",
8218
+ "bundled": true,
8219
+ "requires": {
8220
+ "figgy-pudding": "3.5.1"
8221
+ }
8222
  },
8223
  "stream-each": {
8224
  "version": "1.2.2",
8234
  "requires": {
8235
  "readable-stream": "2.3.6",
8236
  "stream-shift": "1.0.0"
8237
+ },
8238
+ "dependencies": {
8239
+ "readable-stream": {
8240
+ "version": "2.3.6",
8241
+ "bundled": true,
8242
+ "requires": {
8243
+ "core-util-is": "1.0.2",
8244
+ "inherits": "2.0.3",
8245
+ "isarray": "1.0.0",
8246
+ "process-nextick-args": "2.0.0",
8247
+ "safe-buffer": "5.1.2",
8248
+ "string_decoder": "1.1.1",
8249
+ "util-deprecate": "1.0.2"
8250
+ }
8251
+ },
8252
+ "string_decoder": {
8253
+ "version": "1.1.1",
8254
+ "bundled": true,
8255
+ "requires": {
8256
+ "safe-buffer": "5.1.2"
8257
+ }
8258
+ }
8259
  }
8260
  },
8261
  "stream-shift": {
8292
  }
8293
  },
8294
  "string_decoder": {
8295
+ "version": "1.2.0",
8296
  "bundled": true,
8297
  "requires": {
8298
  "safe-buffer": "5.1.2"
8325
  }
8326
  },
8327
  "tar": {
8328
+ "version": "4.4.8",
8329
  "bundled": true,
8330
  "requires": {
8331
+ "chownr": "1.1.1",
8332
  "fs-minipass": "1.2.5",
8333
+ "minipass": "2.3.5",
8334
+ "minizlib": "1.1.1",
8335
  "mkdirp": "0.5.1",
8336
  "safe-buffer": "5.1.2",
8337
+ "yallist": "3.0.3"
8338
  },
8339
  "dependencies": {
8340
+ "chownr": {
8341
+ "version": "1.1.1",
8342
+ "bundled": true
8343
+ },
8344
+ "minipass": {
8345
+ "version": "2.3.5",
8346
+ "bundled": true,
8347
+ "requires": {
8348
+ "safe-buffer": "5.1.2",
8349
+ "yallist": "3.0.3"
8350
+ }
8351
+ },
8352
  "yallist": {
8353
+ "version": "3.0.3",
8354
  "bundled": true
8355
  }
8356
  }
8376
  "requires": {
8377
  "readable-stream": "2.3.6",
8378
  "xtend": "4.0.1"
8379
+ },
8380
+ "dependencies": {
8381
+ "readable-stream": {
8382
+ "version": "2.3.6",
8383
+ "bundled": true,
8384
+ "requires": {
8385
+ "core-util-is": "1.0.2",
8386
+ "inherits": "2.0.3",
8387
+ "isarray": "1.0.0",
8388
+ "process-nextick-args": "2.0.0",
8389
+ "safe-buffer": "5.1.2",
8390
+ "string_decoder": "1.1.1",
8391
+ "util-deprecate": "1.0.2"
8392
+ }
8393
+ },
8394
+ "string_decoder": {
8395
+ "version": "1.1.1",
8396
+ "bundled": true,
8397
+ "requires": {
8398
+ "safe-buffer": "5.1.2"
8399
+ }
8400
+ }
8401
  }
8402
  },
8403
  "timed-out": {
8441
  "bundled": true
8442
  },
8443
  "unique-filename": {
8444
+ "version": "1.1.1",
8445
  "bundled": true,
8446
  "requires": {
8447
  "unique-slug": "2.0.0"
8602
  "bundled": true
8603
  },
8604
  "write-file-atomic": {
8605
+ "version": "2.4.2",
8606
  "bundled": true,
8607
  "requires": {
8608
+ "graceful-fs": "4.1.15",
8609
  "imurmurhash": "0.1.4",
8610
  "signal-exit": "3.0.2"
8611
  }
package.json CHANGED
@@ -39,7 +39,7 @@
39
  "gzip-size": "^4.1.0",
40
  "inquirer": "^5.0.0",
41
  "node-sass": "^4.7.2",
42
- "npm": "^6.4.1",
43
  "ora": "^1.3.0",
44
  "postcss-loader": "^2.0.10",
45
  "raw-loader": "^0.5.1",
39
  "gzip-size": "^4.1.0",
40
  "inquirer": "^5.0.0",
41
  "node-sass": "^4.7.2",
42
+ "npm": "^6.9.0",
43
  "ora": "^1.3.0",
44
  "postcss-loader": "^2.0.10",
45
  "raw-loader": "^0.5.1",