PageSourceSearch

https://www.flora-creative.com/flora-web.js

js flora-creative.com collected 2026-10-02 16:01:27 UTC 678,395 bytes, 20,634 lines download raw bytes

1
2(function() {
3'use strict';
4
5function F2(fun)
6{
7  function wrapper(a) { return function(b) { return fun(a,b); }; }
8  wrapper.arity = 2;
9  wrapper.func = fun;
10  return wrapper;
11}
12
13function F3(fun)
14{
15  function wrapper(a) {
16    return function(b) { return function(c) { return fun(a, b, c); }; };
17  }
18  wrapper.arity = 3;
19  wrapper.func = fun;
20  return wrapper;
21}
22
23function F4(fun)
24{
25  function wrapper(a) { return function(b) { return function(c) {
26    return function(d) { return fun(a, b, c, d); }; }; };
27  }
28  wrapper.arity = 4;
29  wrapper.func = fun;
30  return wrapper;
31}
32
33function F5(fun)
34{
35  function wrapper(a) { return function(b) { return function(c) {
36    return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; };
37  }
38  wrapper.arity = 5;
39  wrapper.func = fun;
40  return wrapper;
41}
42
43function F6(fun)
44{
45  function wrapper(a) { return function(b) { return function(c) {
46    return function(d) { return function(e) { return function(f) {
47    return fun(a, b, c, d, e, f); }; }; }; }; };
48  }
49  wrapper.arity = 6;
50  wrapper.func = fun;
51  return wrapper;
52}
53
54function F7(fun)
55{
56  function wrapper(a) { return function(b) { return function(c) {
57    return function(d) { return function(e) { return function(f) {
58    return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; };
59  }
60  wrapper.arity = 7;
61  wrapper.func = fun;
62  return wrapper;
63}
64
65function F8(fun)
66{
67  function wrapper(a) { return function(b) { return function(c) {
68    return function(d) { return function(e) { return function(f) {
69    return function(g) { return function(h) {
70    return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; };
71  }
72  wrapper.arity = 8;
73  wrapper.func = fun;
74  return wrapper;
75}
76
77function F9(fun)
78{
79  function wrapper(a) { return function(b) { return function(c) {
80    return function(d) { return function(e) { return function(f) {
81    return function(g) { return function(h) { return function(i) {
82    return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; };
83  }
84  wrapper.arity = 9;
85  wrapper.func = fun;
86  return wrapper;
87}
88
89function A2(fun, a, b)
90{
91  return fun.arity === 2
92    ? fun.func(a, b)
93    : fun(a)(b);
94}
95function A3(fun, a, b, c)
96{
97  return fun.arity === 3
98    ? fun.func(a, b, c)
99    : fun(a)(b)(c);
100}
101function A4(fun, a, b, c, d)
102{
103  return fun.arity === 4
104    ? fun.func(a, b, c, d)
105    : fun(a)(b)(c)(d);
106}
107function A5(fun, a, b, c, d, e)
108{
109  return fun.arity === 5
110    ? fun.func(a, b, c, d, e)
111    : fun(a)(b)(c)(d)(e);
112}
113function A6(fun, a, b, c, d, e, f)
114{
115  return fun.arity === 6
116    ? fun.func(a, b, c, d, e, f)
117    : fun(a)(b)(c)(d)(e)(f);
118}
119function A7(fun, a, b, c, d, e, f, g)
120{
121  return fun.arity === 7
122    ? fun.func(a, b, c, d, e, f, g)
123    : fun(a)(b)(c)(d)(e)(f)(g);
124}
125function A8(fun, a, b, c, d, e, f, g, h)
126{
127  return fun.arity === 8
128    ? fun.func(a, b, c, d, e, f, g, h)
129    : fun(a)(b)(c)(d)(e)(f)(g)(h);
130}
131function A9(fun, a, b, c, d, e, f, g, h, i)
132{
133  return fun.arity === 9
134    ? fun.func(a, b, c, d, e, f, g, h, i)
135    : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);
136}
137
138//import Native.List //
139
140var _elm_lang$core$Native_Array = function() {
141
142// A RRB-Tree has two distinct data types.
143// Leaf -> "height"  is always 0
144//         "table"   is an array of elements
145// Node -> "height"  is always greater than 0
146//         "table"   is an array of child nodes
147//         "lengths" is an array of accumulated lengths of the child nodes
148
149// M is the maximal table size. 32 seems fast. E is the allowed increase
150// of search steps when concatting to find an index. Lower values will
151// decrease balancing, but will increase search steps.
152var M = 32;
153var E = 2;
154
155// An empty array.
156var empty = {
157	ctor: '_Array',
158	height: 0,
159	table: []
160};
161
162
163function get(i, array)
164{
165	if (i < 0 || i >= length(array))
166	{
167		throw new Error(
168			'Index ' + i + ' is out of range. Check the length of ' +
169			'your array first or use getMaybe or getWithDefault.');
170	}
171	return unsafeGet(i, array);
172}
173
174
175function unsafeGet(i, array)
176{
177	for (var x = array.height; x > 0; x--)
178	{
179		var slot = i >> (x * 5);
180		while (array.lengths[slot] <= i)
181		{
182			slot++;
183		}
184		if (slot > 0)
185		{
186			i -= array.lengths[slot - 1];
187		}
188		array = array.table[slot];
189	}
190	return array.table[i];
191}
192
193
194// Sets the value at the index i. Only the nodes leading to i will get
195// copied and updated.
196function set(i, item, array)
197{
198	if (i < 0 || length(array) <= i)
199	{
200		return array;
201	}
202	return unsafeSet(i, item, array);
203}
204
205
206function unsafeSet(i, item, array)
207{
208	array = nodeCopy(array);
209
210	if (array.height === 0)
211	{
212		array.table[i] = item;
213	}
214	else
215	{
216		var slot = getSlot(i, array);
217		if (slot > 0)
218		{
219			i -= array.lengths[slot - 1];
220		}
221		array.table[slot] = unsafeSet(i, item, array.table[slot]);
222	}
223	return array;
224}
225
226
227function initialize(len, f)
228{
229	if (len <= 0)
230	{
231		return empty;
232	}
233	var h = Math.floor( Math.log(len) / Math.log(M) );
234	return initialize_(f, h, 0, len);
235}
236
237function initialize_(f, h, from, to)
238{
239	if (h === 0)
240	{
241		var table = new Array((to - from) % (M + 1));
242		for (var i = 0; i < table.length; i++)
243		{
244		  table[i] = f(from + i);
245		}
246		return {
247			ctor: '_Array',
248			height: 0,
249			table: table
250		};
251	}
252
253	var step = Math.pow(M, h);
254	var table = new Array(Math.ceil((to - from) / step));
255	var lengths = new Array(table.length);
256	for (var i = 0; i < table.length; i++)
257	{
258		table[i] = initialize_(f, h - 1, from + (i * step), Math.min(from + ((i + 1) * step), to));
259		lengths[i] = length(table[i]) + (i > 0 ? lengths[i-1] : 0);
260	}
261	return {
262		ctor: '_Array',
263		height: h,
264		table: table,
265		lengths: lengths
266	};
267}
268
269function fromList(list)
270{
271	if (list.ctor === '[]')
272	{
273		return empty;
274	}
275
276	// Allocate M sized blocks (table) and write list elements to it.
277	var table = new Array(M);
278	var nodes = [];
279	var i = 0;
280
281	while (list.ctor !== '[]')
282	{
283		table[i] = list._0;
284		list = list._1;
285		i++;
286
287		// table is full, so we can push a leaf containing it into the
288		// next node.
289		if (i === M)
290		{
291			var leaf = {
292				ctor: '_Array',
293				height: 0,
294				table: table
295			};
296			fromListPush(leaf, nodes);
297			table = new Array(M);
298			i = 0;
299		}
300	}
301
302	// Maybe there is something left on the table.
303	if (i > 0)
304	{
305		var leaf = {
306			ctor: '_Array',
307			height: 0,
308			table: table.splice(0, i)
309		};
310		fromListPush(leaf, nodes);
311	}
312
313	// Go through all of the nodes and eventually push them into higher nodes.
314	for (var h = 0; h < nodes.length - 1; h++)
315	{
316		if (nodes[h].table.length > 0)
317		{
318			fromListPush(nodes[h], nodes);
319		}
320	}
321
322	var head = nodes[nodes.length - 1];
323	if (head.height > 0 && head.table.length === 1)
324	{
325		return head.table[0];
326	}
327	else
328	{
329		return head;
330	}
331}
332
333// Push a node into a higher node as a child.
334function fromListPush(toPush, nodes)
335{
336	var h = toPush.height;
337
338	// Maybe the node on this height does not exist.
339	if (nodes.length === h)
340	{
341		var node = {
342			ctor: '_Array',
343			height: h + 1,
344			table: [],
345			lengths: []
346		};
347		nodes.push(node);
348	}
349
350	nodes[h].table.push(toPush);
351	var len = length(toPush);
352	if (nodes[h].lengths.length > 0)
353	{
354		len += nodes[h].lengths[nodes[h].lengths.length - 1];
355	}
356	nodes[h].lengths.push(len);
357
358	if (nodes[h].table.length === M)
359	{
360		fromListPush(nodes[h], nodes);
361		nodes[h] = {
362			ctor: '_Array',
363			height: h + 1,
364			table: [],
365			lengths: []
366		};
367	}
368}
369
370// Pushes an item via push_ to the bottom right of a tree.
371function push(item, a)
372{
373	var pushed = push_(item, a);
374	if (pushed !== null)
375	{
376		return pushed;
377	}
378
379	var newTree = create(item, a.height);
380	return siblise(a, newTree);
381}
382
383// Recursively tries to push an item to the bottom-right most
384// tree possible. If there is no space left for the item,
385// null will be returned.
386function push_(item, a)
387{
388	// Handle resursion stop at leaf level.
389	if (a.height === 0)
390	{
391		if (a.table.length < M)
392		{
393			var newA = {
394				ctor: '_Array',
395				height: 0,
396				table: a.table.slice()
397			};
398			newA.table.push(item);
399			return newA;
400		}
401		else
402		{
403		  return null;
404		}
405	}
406
407	// Recursively push
408	var pushed = push_(item, botRight(a));
409
410	// There was space in the bottom right tree, so the slot will
411	// be updated.
412	if (pushed !== null)
413	{
414		var newA = nodeCopy(a);
415		newA.table[newA.table.length - 1] = pushed;
416		newA.lengths[newA.lengths.length - 1]++;
417		return newA;
418	}
419
420	// When there was no space left, check if there is space left
421	// for a new slot with a tree which contains only the item
422	// at the bottom.
423	if (a.table.length < M)
424	{
425		var newSlot = create(item, a.height - 1);
426		var newA = nodeCopy(a);
427		newA.table.push(newSlot);
428		newA.lengths.push(newA.lengths[newA.lengths.length - 1] + length(newSlot));
429		return newA;
430	}
431	else
432	{
433		return null;
434	}
435}
436
437// Converts an array into a list of elements.
438function toList(a)
439{
440	return toList_(_elm_lang$core$Native_List.Nil, a);
441}
442
443function toList_(list, a)
444{
445	for (var i = a.table.length - 1; i >= 0; i--)
446	{
447		list =
448			a.height === 0
449				? _elm_lang$core$Native_List.Cons(a.table[i], list)
450				: toList_(list, a.table[i]);
451	}
452	return list;
453}
454
455// Maps a function over the elements of an array.
456function map(f, a)
457{
458	var newA = {
459		ctor: '_Array',
460		height: a.height,
461		table: new Array(a.table.length)
462	};
463	if (a.height > 0)
464	{
465		newA.lengths = a.lengths;
466	}
467	for (var i = 0; i < a.table.length; i++)
468	{
469		newA.table[i] =
470			a.height === 0
471				? f(a.table[i])
472				: map(f, a.table[i]);
473	}
474	return newA;
475}
476
477// Maps a function over the elements with their index as first argument.
478function indexedMap(f, a)
479{
480	return indexedMap_(f, a, 0);
481}
482
483function indexedMap_(f, a, from)
484{
485	var newA = {
486		ctor: '_Array',
487		height: a.height,
488		table: new Array(a.table.length)
489	};
490	if (a.height > 0)
491	{
492		newA.lengths = a.lengths;
493	}
494	for (var i = 0; i < a.table.length; i++)
495	{
496		newA.table[i] =
497			a.height === 0
498				? A2(f, from + i, a.table[i])
499				: indexedMap_(f, a.table[i], i == 0 ? from : from + a.lengths[i - 1]);
500	}
501	return newA;
502}
503
504function foldl(f, b, a)
505{
506	if (a.height === 0)
507	{
508		for (var i = 0; i < a.table.length; i++)
509		{
510			b = A2(f, a.table[i], b);
511		}
512	}
513	else
514	{
515		for (var i = 0; i < a.table.length; i++)
516		{
517			b = foldl(f, b, a.table[i]);
518		}
519	}
520	return b;
521}
522
523function foldr(f, b, a)
524{
525	if (a.height === 0)
526	{
527		for (var i = a.table.length; i--; )
528		{
529			b = A2(f, a.table[i], b);
530		}
531	}
532	else
533	{
534		for (var i = a.table.length; i--; )
535		{
536			b = foldr(f, b, a.table[i]);
537		}
538	}
539	return b;
540}
541
542// TODO: currently, it slices the right, then the left. This can be
543// optimized.
544function slice(from, to, a)
545{
546	if (from < 0)
547	{
548		from += length(a);
549	}
550	if (to < 0)
551	{
552		to += length(a);
553	}
554	return sliceLeft(from, sliceRight(to, a));
555}
556
557function sliceRight(to, a)
558{
559	if (to === length(a))
560	{
561		return a;
562	}
563
564	// Handle leaf level.
565	if (a.height === 0)
566	{
567		var newA = { ctor:'_Array', height:0 };
568		newA.table = a.table.slice(0, to);
569		return newA;
570	}
571
572	// Slice the right recursively.
573	var right = getSlot(to, a);
574	var sliced = sliceRight(to - (right > 0 ? a.lengths[right - 1] : 0), a.table[right]);
575
576	// Maybe the a node is not even needed, as sliced contains the whole slice.
577	if (right === 0)
578	{
579		return sliced;
580	}
581
582	// Create new node.
583	var newA = {
584		ctor: '_Array',
585		height: a.height,
586		table: a.table.slice(0, right),
587		lengths: a.lengths.slice(0, right)
588	};
589	if (sliced.table.length > 0)
590	{
591		newA.table[right] = sliced;
592		newA.lengths[right] = length(sliced) + (right > 0 ? newA.lengths[right - 1] : 0);
593	}
594	return newA;
595}
596
597function sliceLeft(from, a)
598{
599	if (from === 0)
600	{
601		return a;
602	}
603
604	// Handle leaf level.
605	if (a.height === 0)
606	{
607		var newA = { ctor:'_Array', height:0 };
608		newA.table = a.table.slice(from, a.table.length + 1);
609		return newA;
610	}
611
612	// Slice the left recursively.
613	var left = getSlot(from, a);
614	var sliced = sliceLeft(from - (left > 0 ? a.lengths[left - 1] : 0), a.table[left]);
615
616	// Maybe the a node is not even needed, as sliced contains the whole slice.
617	if (left === a.table.length - 1)
618	{
619		return sliced;
620	}
621
622	// Create new node.
623	var newA = {
624		ctor: '_Array',
625		height: a.height,
626		table: a.table.slice(left, a.table.length + 1),
627		lengths: new Array(a.table.length - left)
628	};
629	newA.table[0] = sliced;
630	var len = 0;
631	for (var i = 0; i < newA.table.length; i++)
632	{
633		len += length(newA.table[i]);
634		newA.lengths[i] = len;
635	}
636
637	return newA;
638}
639
640// Appends two trees.
641function append(a,b)
642{
643	if (a.table.length === 0)
644	{
645		return b;
646	}
647	if (b.table.length === 0)
648	{
649		return a;
650	}
651
652	var c = append_(a, b);
653
654	// Check if both nodes can be crunshed together.
655	if (c[0].table.length + c[1].table.length <= M)
656	{
657		if (c[0].table.length === 0)
658		{
659			return c[1];
660		}
661		if (c[1].table.length === 0)
662		{
663			return c[0];
664		}
665
666		// Adjust .table and .lengths
667		c[0].table = c[0].table.concat(c[1].table);
668		if (c[0].height > 0)
669		{
670			var len = length(c[0]);
671			for (var i = 0; i < c[1].lengths.length; i++)
672			{
673				c[1].lengths[i] += len;
674			}
675			c[0].lengths = c[0].lengths.concat(c[1].lengths);
676		}
677
678		return c[0];
679	}
680
681	if (c[0].height > 0)
682	{
683		var toRemove = calcToRemove(a, b);
684		if (toRemove > E)
685		{
686			c = shuffle(c[0], c[1], toRemove);
687		}
688	}
689
690	return siblise(c[0], c[1]);
691}
692
693// Returns an array of two nodes; right and left. One node _may_ be empty.
694function append_(a, b)
695{
696	if (a.height === 0 && b.height === 0)
697	{
698		return [a, b];
699	}
700
701	if (a.height !== 1 || b.height !== 1)
702	{
703		if (a.height === b.height)
704		{
705			a = nodeCopy(a);
706			b = nodeCopy(b);
707			var appended = append_(botRight(a), botLeft(b));
708
709			insertRight(a, appended[1]);
710			insertLeft(b, appended[0]);
711		}
712		else if (a.height > b.height)
713		{
714			a = nodeCopy(a);
715			var appended = append_(botRight(a), b);
716
717			insertRight(a, appended[0]);
718			b = parentise(appended[1], appended[1].height + 1);
719		}
720		else
721		{
722			b = nodeCopy(b);
723			var appended = append_(a, botLeft(b));
724
725			var left = appended[0].table.length === 0 ? 0 : 1;
726			var right = left === 0 ? 1 : 0;
727			insertLeft(b, appended[left]);
728			a = parentise(appended[right], appended[right].height + 1);
729		}
730	}
731
732	// Check if balancing is needed and return based on that.
733	if (a.table.length === 0 || b.table.length === 0)
734	{
735		return [a, b];
736	}
737
738	var toRemove = calcToRemove(a, b);
739	if (toRemove <= E)
740	{
741		return [a, b];
742	}
743	return shuffle(a, b, toRemove);
744}
745
746// Helperfunctions for append_. Replaces a child node at the side of the parent.
747function insertRight(parent, node)
748{
749	var index = parent.table.length - 1;
750	parent.table[index] = node;
751	parent.lengths[index] = length(node);
752	parent.lengths[index] += index > 0 ? parent.lengths[index - 1] : 0;
753}
754
755function insertLeft(parent, node)
756{
757	if (node.table.length > 0)
758	{
759		parent.table[0] = node;
760		parent.lengths[0] = length(node);
761
762		var len = length(parent.table[0]);
763		for (var i = 1; i < parent.lengths.length; i++)
764		{
765			len += length(parent.table[i]);
766			parent.lengths[i] = len;
767		}
768	}
769	else
770	{
771		parent.table.shift();
772		for (var i = 1; i < parent.lengths.length; i++)
773		{
774			parent.lengths[i] = parent.lengths[i] - parent.lengths[0];
775		}
776		parent.lengths.shift();
777	}
778}
779
780// Returns the extra search steps for E. Refer to the paper.
781function calcToRemove(a, b)
782{
783	var subLengths = 0;
784	for (var i = 0; i < a.table.length; i++)
785	{
786		subLengths += a.table[i].table.length;
787	}
788	for (var i = 0; i < b.table.length; i++)
789	{
790		subLengths += b.table[i].table.length;
791	}
792
793	var toRemove = a.table.length + b.table.length;
794	return toRemove - (Math.floor((subLengths - 1) / M) + 1);
795}
796
797// get2, set2 and saveSlot are helpers for accessing elements over two arrays.
798function get2(a, b, index)
799{
800	return index < a.length
801		? a[index]
802		: b[index - a.length];
803}
804
805function set2(a, b, index, value)
806{
807	if (index < a.length)
808	{
809		a[index] = value;
810	}
811	else
812	{
813		b[index - a.length] = value;
814	}
815}
816
817function saveSlot(a, b, index, slot)
818{
819	set2(a.table, b.table, index, slot);
820
821	var l = (index === 0 || index === a.lengths.length)
822		? 0
823		: get2(a.lengths, a.lengths, index - 1);
824
825	set2(a.lengths, b.lengths, index, l + length(slot));
826}
827
828// Creates a node or leaf with a given length at their arrays for perfomance.
829// Is only used by shuffle.
830function createNode(h, length)
831{
832	if (length < 0)
833	{
834		length = 0;
835	}
836	var a = {
837		ctor: '_Array',
838		height: h,
839		table: new Array(length)
840	};
841	if (h > 0)
842	{
843		a.lengths = new Array(length);
844	}
845	return a;
846}
847
848// Returns an array of two balanced nodes.
849function shuffle(a, b, toRemove)
850{
851	var newA = createNode(a.height, Math.min(M, a.table.length + b.table.length - toRemove));
852	var newB = createNode(a.height, newA.table.length - (a.table.length + b.table.length - toRemove));
853
854	// Skip the slots with size M. More precise: copy the slot references
855	// to the new node
856	var read = 0;
857	while (get2(a.table, b.table, read).table.length % M === 0)
858	{
859		set2(newA.table, newB.table, read, get2(a.table, b.table, read));
860		set2(newA.lengths, newB.lengths, read, get2(a.lengths, b.lengths, read));
861		read++;
862	}
863
864	// Pulling items from left to right, caching in a slot before writing
865	// it into the new nodes.
866	var write = read;
867	var slot = new createNode(a.height - 1, 0);
868	var from = 0;
869
870	// If the current slot is still containing data, then there will be at
871	// least one more write, so we do not break this loop yet.
872	while (read - write - (slot.table.length > 0 ? 1 : 0) < toRemove)
873	{
874		// Find out the max possible items for copying.
875		var source = get2(a.table, b.table, read);
876		var to = Math.min(M - slot.table.length, source.table.length);
877
878		// Copy and adjust size table.
879		slot.table = slot.table.concat(source.table.slice(from, to));
880		if (slot.height > 0)
881		{
882			var len = slot.lengths.length;
883			for (var i = len; i < len + to - from; i++)
884			{
885				slot.lengths[i] = length(slot.table[i]);
886				slot.lengths[i] += (i > 0 ? slot.lengths[i - 1] : 0);
887			}
888		}
889
890		from += to;
891
892		// Only proceed to next slots[i] if the current one was
893		// fully copied.
894		if (source.table.length <= to)
895		{
896			read++; from = 0;
897		}
898
899		// Only create a new slot if the current one is filled up.
900		if (slot.table.length === M)
901		{
902			saveSlot(newA, newB, write, slot);
903			slot = createNode(a.height - 1, 0);
904			write++;
905		}
906	}
907
908	// Cleanup after the loop. Copy the last slot into the new nodes.
909	if (slot.table.length > 0)
910	{
911		saveSlot(newA, newB, write, slot);
912		write++;
913	}
914
915	// Shift the untouched slots to the left
916	while (read < a.table.length + b.table.length )
917	{
918		saveSlot(newA, newB, write, get2(a.table, b.table, read));
919		read++;
920		write++;
921	}
922
923	return [newA, newB];
924}
925
926// Navigation functions
927function botRight(a)
928{
929	return a.table[a.table.length - 1];
930}
931function botLeft(a)
932{
933	return a.table[0];
934}
935
936// Copies a node for updating. Note that you should not use this if
937// only updating only one of "table" or "lengths" for performance reasons.
938function nodeCopy(a)
939{
940	var newA = {
941		ctor: '_Array',
942		height: a.height,
943		table: a.table.slice()
944	};
945	if (a.height > 0)
946	{
947		newA.lengths = a.lengths.slice();
948	}
949	return newA;
950}
951
952// Returns how many items are in the tree.
953function length(array)
954{
955	if (array.height === 0)
956	{
957		return array.table.length;
958	}
959	else
960	{
961		return array.lengths[array.lengths.length - 1];
962	}
963}
964
965// Calculates in which slot of "table" the item probably is, then
966// find the exact slot via forward searching in  "lengths". Returns the index.
967function getSlot(i, a)
968{
969	var slot = i >> (5 * a.height);
970	while (a.lengths[slot] <= i)
971	{
972		slot++;
973	}
974	return slot;
975}
976
977// Recursively creates a tree with a given height containing
978// only the given item.
979function create(item, h)
980{
981	if (h === 0)
982	{
983		return {
984			ctor: '_Array',
985			height: 0,
986			table: [item]
987		};
988	}
989	return {
990		ctor: '_Array',
991		height: h,
992		table: [create(item, h - 1)],
993		lengths: [1]
994	};
995}
996
997// Recursively creates a tree that contains the given tree.
998function parentise(tree, h)
999{
1000	if (h === tree.height)
1001	{
1002		return tree;
1003	}
1004
1005	return {
1006		ctor: '_Array',
1007		height: h,
1008		table: [parentise(tree, h - 1)],
1009		lengths: [length(tree)]
1010	};
1011}
1012
1013// Emphasizes blood brotherhood beneath two trees.
1014function siblise(a, b)
1015{
1016	return {
1017		ctor: '_Array',
1018		height: a.height + 1,
1019		table: [a, b],
1020		lengths: [length(a), length(a) + length(b)]
1021	};
1022}
1023
1024function toJSArray(a)
1025{
1026	var jsArray = new Array(length(a));
1027	toJSArray_(jsArray, 0, a);
1028	return jsArray;
1029}
1030
1031function toJSArray_(jsArray, i, a)
1032{
1033	for (var t = 0; t < a.table.length; t++)
1034	{
1035		if (a.height === 0)
1036		{
1037			jsArray[i + t] = a.table[t];
1038		}
1039		else
1040		{
1041			var inc = t === 0 ? 0 : a.lengths[t - 1];
1042			toJSArray_(jsArray, i + inc, a.table[t]);
1043		}
1044	}
1045}
1046
1047function fromJSArray(jsArray)
1048{
1049	if (jsArray.length === 0)
1050	{
1051		return empty;
1052	}
1053	var h = Math.floor(Math.log(jsArray.length) / Math.log(M));
1054	return fromJSArray_(jsArray, h, 0, jsArray.length);
1055}
1056
1057function fromJSArray_(jsArray, h, from, to)
1058{
1059	if (h === 0)
1060	{
1061		return {
1062			ctor: '_Array',
1063			height: 0,
1064			table: jsArray.slice(from, to)
1065		};
1066	}
1067
1068	var step = Math.pow(M, h);
1069	var table = new Array(Math.ceil((to - from) / step));
1070	var lengths = new Array(table.length);
1071	for (var i = 0; i < table.length; i++)
1072	{
1073		table[i] = fromJSArray_(jsArray, h - 1, from + (i * step), Math.min(from + ((i + 1) * step), to));
1074		lengths[i] = length(table[i]) + (i > 0 ? lengths[i - 1] : 0);
1075	}
1076	return {
1077		ctor: '_Array',
1078		height: h,
1079		table: table,
1080		lengths: lengths
1081	};
1082}
1083
1084return {
1085	empty: empty,
1086	fromList: fromList,
1087	toList: toList,
1088	initialize: F2(initialize),
1089	append: F2(append),
1090	push: F2(push),
1091	slice: F3(slice),
1092	get: F2(get),
1093	set: F3(set),
1094	map: F2(map),
1095	indexedMap: F2(indexedMap),
1096	foldl: F3(foldl),
1097	foldr: F3(foldr),
1098	length: length,
1099
1100	toJSArray: toJSArray,
1101	fromJSArray: fromJSArray
1102};
1103
1104}();
1105//import Native.Utils //
1106
1107var _elm_lang$core$Native_Basics = function() {
1108
1109function div(a, b)
1110{
1111	return (a / b) | 0;
1112}
1113function rem(a, b)
1114{
1115	return a % b;
1116}
1117function mod(a, b)
1118{
1119	if (b === 0)
1120	{
1121		throw new Error('Cannot perform mod 0. Division by zero error.');
1122	}
1123	var r = a % b;
1124	var m = a === 0 ? 0 : (b > 0 ? (a >= 0 ? r : r + b) : -mod(-a, -b));
1125
1126	return m === b ? 0 : m;
1127}
1128function logBase(base, n)
1129{
1130	return Math.log(n) / Math.log(base);
1131}
1132function negate(n)
1133{
1134	return -n;
1135}
1136function abs(n)
1137{
1138	return n < 0 ? -n : n;
1139}
1140
1141function min(a, b)
1142{
1143	return _elm_lang$core$Native_Utils.cmp(a, b) < 0 ? a : b;
1144}
1145function max(a, b)
1146{
1147	return _elm_lang$core$Native_Utils.cmp(a, b) > 0 ? a : b;
1148}
1149function clamp(lo, hi, n)
1150{
1151	return _elm_lang$core$Native_Utils.cmp(n, lo) < 0
1152		? lo
1153		: _elm_lang$core$Native_Utils.cmp(n, hi) > 0
1154			? hi
1155			: n;
1156}
1157
1158var ord = ['LT', 'EQ', 'GT'];
1159
1160function compare(x, y)
1161{
1162	return { ctor: ord[_elm_lang$core$Native_Utils.cmp(x, y) + 1] };
1163}
1164
1165function xor(a, b)
1166{
1167	return a !== b;
1168}
1169function not(b)
1170{
1171	return !b;
1172}
1173function isInfinite(n)
1174{
1175	return n === Infinity || n === -Infinity;
1176}
1177
1178function truncate(n)
1179{
1180	return n | 0;
1181}
1182
1183function degrees(d)
1184{
1185	return d * Math.PI / 180;
1186}
1187function turns(t)
1188{
1189	return 2 * Math.PI * t;
1190}
1191function fromPolar(point)
1192{
1193	var r = point._0;
1194	var t = point._1;
1195	return _elm_lang$core$Native_Utils.Tuple2(r * Math.cos(t), r * Math.sin(t));
1196}
1197function toPolar(point)
1198{
1199	var x = point._0;
1200	var y = point._1;
1201	return _elm_lang$core$Native_Utils.Tuple2(Math.sqrt(x * x + y * y), Math.atan2(y, x));
1202}
1203
1204return {
1205	div: F2(div),
1206	rem: F2(rem),
1207	mod: F2(mod),
1208
1209	pi: Math.PI,
1210	e: Math.E,
1211	cos: Math.cos,
1212	sin: Math.sin,
1213	tan: Math.tan,
1214	acos: Math.acos,
1215	asin: Math.asin,
1216	atan: Math.atan,
1217	atan2: F2(Math.atan2),
1218
1219	degrees: degrees,
1220	turns: turns,
1221	fromPolar: fromPolar,
1222	toPolar: toPolar,
1223
1224	sqrt: Math.sqrt,
1225	logBase: F2(logBase),
1226	negate: negate,
1227	abs: abs,
1228	min: F2(min),
1229	max: F2(max),
1230	clamp: F3(clamp),
1231	compare: F2(compare),
1232
1233	xor: F2(xor),
1234	not: not,
1235
1236	truncate: truncate,
1237	ceiling: Math.ceil,
1238	floor: Math.floor,
1239	round: Math.round,
1240	toFloat: function(x) { return x; },
1241	isNaN: isNaN,
1242	isInfinite: isInfinite
1243};
1244
1245}();
1246//import //
1247
1248var _elm_lang$core$Native_Utils = function() {
1249
1250// COMPARISONS
1251
1252function eq(x, y)
1253{
1254	var stack = [];
1255	var isEqual = eqHelp(x, y, 0, stack);
1256	var pair;
1257	while (isEqual && (pair = stack.pop()))
1258	{
1259		isEqual = eqHelp(pair.x, pair.y, 0, stack);
1260	}
1261	return isEqual;
1262}
1263
1264
1265function eqHelp(x, y, depth, stack)
1266{
1267	if (depth > 100)
1268	{
1269		stack.push({ x: x, y: y });
1270		return true;
1271	}
1272
1273	if (x === y)
1274	{
1275		return true;
1276	}
1277
1278	if (typeof x !== 'object')
1279	{
1280		if (typeof x === 'function')
1281		{
1282			throw new Error(
1283				'Trying to use `(==)` on functions. There is no way to know if functions are "the same" in the Elm sense.'
1284				+ ' Read more about this at http://package.elm-lang.org/packages/elm-lang/core/latest/Basics#=='
1285				+ ' which describes why it is this way and what the better version will look like.'
1286			);
1287		}
1288		return false;
1289	}
1290
1291	if (x === null || y === null)
1292	{
1293		return false
1294	}
1295
1296	if (x instanceof Date)
1297	{
1298		return x.getTime() === y.getTime();
1299	}
1300
1301	if (!('ctor' in x))
1302	{
1303		for (var key in x)
1304		{
1305			if (!eqHelp(x[key], y[key], depth + 1, stack))
1306			{
1307				return false;
1308			}
1309		}
1310		return true;
1311	}
1312
1313	// convert Dicts and Sets to lists
1314	if (x.ctor === 'RBNode_elm_builtin' || x.ctor === 'RBEmpty_elm_builtin')
1315	{
1316		x = _elm_lang$core$Dict$toList(x);
1317		y = _elm_lang$core$Dict$toList(y);
1318	}
1319	if (x.ctor === 'Set_elm_builtin')
1320	{
1321		x = _elm_lang$core$Set$toList(x);
1322		y = _elm_lang$core$Set$toList(y);
1323	}
1324
1325	// check if lists are equal without recursion
1326	if (x.ctor === '::')
1327	{
1328		var a = x;
1329		var b = y;
1330		while (a.ctor === '::' && b.ctor === '::')
1331		{
1332			if (!eqHelp(a._0, b._0, depth + 1, stack))
1333			{
1334				return false;
1335			}
1336			a = a._1;
1337			b = b._1;
1338		}
1339		return a.ctor === b.ctor;
1340	}
1341
1342	// check if Arrays are equal
1343	if (x.ctor === '_Array')
1344	{
1345		var xs = _elm_lang$core$Native_Array.toJSArray(x);
1346		var ys = _elm_lang$core$Native_Array.toJSArray(y);
1347		if (xs.length !== ys.length)
1348		{
1349			return false;
1350		}
1351		for (var i = 0; i < xs.length; i++)
1352		{
1353			if (!eqHelp(xs[i], ys[i], depth + 1, stack))
1354			{
1355				return false;
1356			}
1357		}
1358		return true;
1359	}
1360
1361	if (!eqHelp(x.ctor, y.ctor, depth + 1, stack))
1362	{
1363		return false;
1364	}
1365
1366	for (var key in x)
1367	{
1368		if (!eqHelp(x[key], y[key], depth + 1, stack))
1369		{
1370			return false;
1371		}
1372	}
1373	return true;
1374}
1375
1376// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on
1377// the particular integer values assigned to LT, EQ, and GT.
1378
1379var LT = -1, EQ = 0, GT = 1;
1380
1381function cmp(x, y)
1382{
1383	if (typeof x !== 'object')
1384	{
1385		return x === y ? EQ : x < y ? LT : GT;
1386	}
1387
1388	if (x instanceof String)
1389	{
1390		var a = x.valueOf();
1391		var b = y.valueOf();
1392		return a === b ? EQ : a < b ? LT : GT;
1393	}
1394
1395	if (x.ctor === '::' || x.ctor === '[]')
1396	{
1397		while (x.ctor === '::' && y.ctor === '::')
1398		{
1399			var ord = cmp(x._0, y._0);
1400			if (ord !== EQ)
1401			{
1402				return ord;
1403			}
1404			x = x._1;
1405			y = y._1;
1406		}
1407		return x.ctor === y.ctor ? EQ : x.ctor === '[]' ? LT : GT;
1408	}
1409
1410	if (x.ctor.slice(0, 6) === '_Tuple')
1411	{
1412		var ord;
1413		var n = x.ctor.slice(6) - 0;
1414		var err = 'cannot compare tuples with more than 6 elements.';
1415		if (n === 0) return EQ;
1416		if (n >= 1) { ord = cmp(x._0, y._0); if (ord !== EQ) return ord;
1417		if (n >= 2) { ord = cmp(x._1, y._1); if (ord !== EQ) return ord;
1418		if (n >= 3) { ord = cmp(x._2, y._2); if (ord !== EQ) return ord;
1419		if (n >= 4) { ord = cmp(x._3, y._3); if (ord !== EQ) return ord;
1420		if (n >= 5) { ord = cmp(x._4, y._4); if (ord !== EQ) return ord;
1421		if (n >= 6) { ord = cmp(x._5, y._5); if (ord !== EQ) return ord;
1422		if (n >= 7) throw new Error('Comparison error: ' + err); } } } } } }
1423		return EQ;
1424	}
1425
1426	throw new Error(
1427		'Comparison error: comparison is only defined on ints, '
1428		+ 'floats, times, chars, strings, lists of comparable values, '
1429		+ 'and tuples of comparable values.'
1430	);
1431}
1432
1433
1434// COMMON VALUES
1435
1436var Tuple0 = {
1437	ctor: '_Tuple0'
1438};
1439
1440function Tuple2(x, y)
1441{
1442	return {
1443		ctor: '_Tuple2',
1444		_0: x,
1445		_1: y
1446	};
1447}
1448
1449function chr(c)
1450{
1451	return new String(c);
1452}
1453
1454
1455// GUID
1456
1457var count = 0;
1458function guid(_)
1459{
1460	return count++;
1461}
1462
1463
1464// RECORDS
1465
1466function update(oldRecord, updatedFields)
1467{
1468	var newRecord = {};
1469
1470	for (var key in oldRecord)
1471	{
1472		newRecord[key] = oldRecord[key];
1473	}
1474
1475	for (var key in updatedFields)
1476	{
1477		newRecord[key] = updatedFields[key];
1478	}
1479
1480	return newRecord;
1481}
1482
1483
1484//// LIST STUFF ////
1485
1486var Nil = { ctor: '[]' };
1487
1488function Cons(hd, tl)
1489{
1490	return {
1491		ctor: '::',
1492		_0: hd,
1493		_1: tl
1494	};
1495}
1496
1497function append(xs, ys)
1498{
1499	// append Strings
1500	if (typeof xs === 'string')
1501	{
1502		return xs + ys;
1503	}
1504
1505	// append Lists
1506	if (xs.ctor === '[]')
1507	{
1508		return ys;
1509	}
1510	var root = Cons(xs._0, Nil);
1511	var curr = root;
1512	xs = xs._1;
1513	while (xs.ctor !== '[]')
1514	{
1515		curr._1 = Cons(xs._0, Nil);
1516		xs = xs._1;
1517		curr = curr._1;
1518	}
1519	curr._1 = ys;
1520	return root;
1521}
1522
1523
1524// CRASHES
1525
1526function crash(moduleName, region)
1527{
1528	return function(message) {
1529		throw new Error(
1530			'Ran into a `Debug.crash` in module `' + moduleName + '` ' + regionToString(region) + '\n'
1531			+ 'The message provided by the code author is:\n\n    '
1532			+ message
1533		);
1534	};
1535}
1536
1537function crashCase(moduleName, region, value)
1538{
1539	return function(message) {
1540		throw new Error(
1541			'Ran into a `Debug.crash` in module `' + moduleName + '`\n\n'
1542			+ 'This was caused by the `case` expression ' + regionToString(region) + '.\n'
1543			+ 'One of the branches ended with a crash and the following value got through:\n\n    ' + toString(value) + '\n\n'
1544			+ 'The message provided by the code author is:\n\n    '
1545			+ message
1546		);
1547	};
1548}
1549
1550function regionToString(region)
1551{
1552	if (region.start.line == region.end.line)
1553	{
1554		return 'on line ' + region.start.line;
1555	}
1556	return 'between lines ' + region.start.line + ' and ' + region.end.line;
1557}
1558
1559
1560// TO STRING
1561
1562function toString(v)
1563{
1564	var type = typeof v;
1565	if (type === 'function')
1566	{
1567		return '<function>';
1568	}
1569
1570	if (type === 'boolean')
1571	{
1572		return v ? 'True' : 'False';
1573	}
1574
1575	if (type === 'number')
1576	{
1577		return v + '';
1578	}
1579
1580	if (v instanceof String)
1581	{
1582		return '\'' + addSlashes(v, true) + '\'';
1583	}
1584
1585	if (type === 'string')
1586	{
1587		return '"' + addSlashes(v, false) + '"';
1588	}
1589
1590	if (v === null)
1591	{
1592		return 'null';
1593	}
1594
1595	if (type === 'object' && 'ctor' in v)
1596	{
1597		var ctorStarter = v.ctor.substring(0, 5);
1598
1599		if (ctorStarter === '_Tupl')
1600		{
1601			var output = [];
1602			for (var k in v)
1603			{
1604				if (k === 'ctor') continue;
1605				output.push(toString(v[k]));
1606			}
1607			return '(' + output.join(',') + ')';
1608		}
1609
1610		if (ctorStarter === '_Task')
1611		{
1612			return '<task>'
1613		}
1614
1615		if (v.ctor === '_Array')
1616		{
1617			var list = _elm_lang$core$Array$toList(v);
1618			return 'Array.fromList ' + toString(list);
1619		}
1620
1621		if (v.ctor === '<decoder>')
1622		{
1623			return '<decoder>';
1624		}
1625
1626		if (v.ctor === '_Process')
1627		{
1628			return '<process:' + v.id + '>';
1629		}
1630
1631		if (v.ctor === '::')
1632		{
1633			var output = '[' + toString(v._0);
1634			v = v._1;
1635			while (v.ctor === '::')
1636			{
1637				output += ',' + toString(v._0);
1638				v = v._1;
1639			}
1640			return output + ']';
1641		}
1642
1643		if (v.ctor === '[]')
1644		{
1645			return '[]';
1646		}
1647
1648		if (v.ctor === 'Set_elm_builtin')
1649		{
1650			return 'Set.fromList ' + toString(_elm_lang$core$Set$toList(v));
1651		}
1652
1653		if (v.ctor === 'RBNode_elm_builtin' || v.ctor === 'RBEmpty_elm_builtin')
1654		{
1655			return 'Dict.fromList ' + toString(_elm_lang$core$Dict$toList(v));
1656		}
1657
1658		var output = '';
1659		for (var i in v)
1660		{
1661			if (i === 'ctor') continue;
1662			var str = toString(v[i]);
1663			var c0 = str[0];
1664			var parenless = c0 === '{' || c0 === '(' || c0 === '<' || c0 === '"' || str.indexOf(' ') < 0;
1665			output += ' ' + (parenless ? str : '(' + str + ')');
1666		}
1667		return v.ctor + output;
1668	}
1669
1670	if (type === 'object')
1671	{
1672		if (v instanceof Date)
1673		{
1674			return '<' + v.toString() + '>';
1675		}
1676
1677		if (v.elm_web_socket)
1678		{
1679			return '<websocket>';
1680		}
1681
1682		var output = [];
1683		for (var k in v)
1684		{
1685			output.push(k + ' = ' + toString(v[k]));
1686		}
1687		if (output.length === 0)
1688		{
1689			return '{}';
1690		}
1691		return '{ ' + output.join(', ') + ' }';
1692	}
1693
1694	return '<internal structure>';
1695}
1696
1697function addSlashes(str, isChar)
1698{
1699	var s = str.replace(/\\/g, '\\\\')
1700			  .replace(/\n/g, '\\n')
1701			  .replace(/\t/g, '\\t')
1702			  .replace(/\r/g, '\\r')
1703			  .replace(/\v/g, '\\v')
1704			  .replace(/\0/g, '\\0');
1705	if (isChar)
1706	{
1707		return s.replace(/\'/g, '\\\'');
1708	}
1709	else
1710	{
1711		return s.replace(/\"/g, '\\"');
1712	}
1713}
1714
1715
1716return {
1717	eq: eq,
1718	cmp: cmp,
1719	Tuple0: Tuple0,
1720	Tuple2: Tuple2,
1721	chr: chr,
1722	update: update,
1723	guid: guid,
1724
1725	append: F2(append),
1726
1727	crash: crash,
1728	crashCase: crashCase,
1729
1730	toString: toString
1731};
1732
1733}();
1734var _elm_lang$core$Basics$never = function (_p0) {
1735	never:
1736	while (true) {
1737		var _p1 = _p0;
1738		var _v1 = _p1._0;
1739		_p0 = _v1;
1740		continue never;
1741	}
1742};
1743var _elm_lang$core$Basics$uncurry = F2(
1744	function (f, _p2) {
1745		var _p3 = _p2;
1746		return A2(f, _p3._0, _p3._1);
1747	});
1748var _elm_lang$core$Basics$curry = F3(
1749	function (f, a, b) {
1750		return f(
1751			{ctor: '_Tuple2', _0: a, _1: b});
1752	});
1753var _elm_lang$core$Basics$flip = F3(
1754	function (f, b, a) {
1755		return A2(f, a, b);
1756	});
1757var _elm_lang$core$Basics$always = F2(
1758	function (a, _p4) {
1759		return a;
1760	});
1761var _elm_lang$core$Basics$identity = function (x) {
1762	return x;
1763};
1764var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1765_elm_lang$core$Basics_ops['<|'] = F2(
1766	function (f, x) {
1767		return f(x);
1768	});
1769var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1770_elm_lang$core$Basics_ops['|>'] = F2(
1771	function (x, f) {
1772		return f(x);
1773	});
1774var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1775_elm_lang$core$Basics_ops['>>'] = F3(
1776	function (f, g, x) {
1777		return g(
1778			f(x));
1779	});
1780var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1781_elm_lang$core$Basics_ops['<<'] = F3(
1782	function (g, f, x) {
1783		return g(
1784			f(x));
1785	});
1786var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1787_elm_lang$core$Basics_ops['++'] = _elm_lang$core$Native_Utils.append;
1788var _elm_lang$core$Basics$toString = _elm_lang$core$Native_Utils.toString;
1789var _elm_lang$core$Basics$isInfinite = _elm_lang$core$Native_Basics.isInfinite;
1790var _elm_lang$core$Basics$isNaN = _elm_lang$core$Native_Basics.isNaN;
1791var _elm_lang$core$Basics$toFloat = _elm_lang$core$Native_Basics.toFloat;
1792var _elm_lang$core$Basics$ceiling = _elm_lang$core$Native_Basics.ceiling;
1793var _elm_lang$core$Basics$floor = _elm_lang$core$Native_Basics.floor;
1794var _elm_lang$core$Basics$truncate = _elm_lang$core$Native_Basics.truncate;
1795var _elm_lang$core$Basics$round = _elm_lang$core$Native_Basics.round;
1796var _elm_lang$core$Basics$not = _elm_lang$core$Native_Basics.not;
1797var _elm_lang$core$Basics$xor = _elm_lang$core$Native_Basics.xor;
1798var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1799_elm_lang$core$Basics_ops['||'] = _elm_lang$core$Native_Basics.or;
1800var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1801_elm_lang$core$Basics_ops['&&'] = _elm_lang$core$Native_Basics.and;
1802var _elm_lang$core$Basics$max = _elm_lang$core$Native_Basics.max;
1803var _elm_lang$core$Basics$min = _elm_lang$core$Native_Basics.min;
1804var _elm_lang$core$Basics$compare = _elm_lang$core$Native_Basics.compare;
1805var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1806_elm_lang$core$Basics_ops['>='] = _elm_lang$core$Native_Basics.ge;
1807var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1808_elm_lang$core$Basics_ops['<='] = _elm_lang$core$Native_Basics.le;
1809var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1810_elm_lang$core$Basics_ops['>'] = _elm_lang$core$Native_Basics.gt;
1811var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1812_elm_lang$core$Basics_ops['<'] = _elm_lang$core$Native_Basics.lt;
1813var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1814_elm_lang$core$Basics_ops['/='] = _elm_lang$core$Native_Basics.neq;
1815var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1816_elm_lang$core$Basics_ops['=='] = _elm_lang$core$Native_Basics.eq;
1817var _elm_lang$core$Basics$e = _elm_lang$core$Native_Basics.e;
1818var _elm_lang$core$Basics$pi = _elm_lang$core$Native_Basics.pi;
1819var _elm_lang$core$Basics$clamp = _elm_lang$core$Native_Basics.clamp;
1820var _elm_lang$core$Basics$logBase = _elm_lang$core$Native_Basics.logBase;
1821var _elm_lang$core$Basics$abs = _elm_lang$core$Native_Basics.abs;
1822var _elm_lang$core$Basics$negate = _elm_lang$core$Native_Basics.negate;
1823var _elm_lang$core$Basics$sqrt = _elm_lang$core$Native_Basics.sqrt;
1824var _elm_lang$core$Basics$atan2 = _elm_lang$core$Native_Basics.atan2;
1825var _elm_lang$core$Basics$atan = _elm_lang$core$Native_Basics.atan;
1826var _elm_lang$core$Basics$asin = _elm_lang$core$Native_Basics.asin;
1827var _elm_lang$core$Basics$acos = _elm_lang$core$Native_Basics.acos;
1828var _elm_lang$core$Basics$tan = _elm_lang$core$Native_Basics.tan;
1829var _elm_lang$core$Basics$sin = _elm_lang$core$Native_Basics.sin;
1830var _elm_lang$core$Basics$cos = _elm_lang$core$Native_Basics.cos;
1831var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1832_elm_lang$core$Basics_ops['^'] = _elm_lang$core$Native_Basics.exp;
1833var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1834_elm_lang$core$Basics_ops['%'] = _elm_lang$core$Native_Basics.mod;
1835var _elm_lang$core$Basics$rem = _elm_lang$core$Native_Basics.rem;
1836var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1837_elm_lang$core$Basics_ops['//'] = _elm_lang$core$Native_Basics.div;
1838var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1839_elm_lang$core$Basics_ops['/'] = _elm_lang$core$Native_Basics.floatDiv;
1840var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1841_elm_lang$core$Basics_ops['*'] = _elm_lang$core$Native_Basics.mul;
1842var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1843_elm_lang$core$Basics_ops['-'] = _elm_lang$core$Native_Basics.sub;
1844var _elm_lang$core$Basics_ops = _elm_lang$core$Basics_ops || {};
1845_elm_lang$core$Basics_ops['+'] = _elm_lang$core$Native_Basics.add;
1846var _elm_lang$core$Basics$toPolar = _elm_lang$core$Native_Basics.toPolar;
1847var _elm_lang$core$Basics$fromPolar = _elm_lang$core$Native_Basics.fromPolar;
1848var _elm_lang$core$Basics$turns = _elm_lang$core$Native_Basics.turns;
1849var _elm_lang$core$Basics$degrees = _elm_lang$core$Native_Basics.degrees;
1850var _elm_lang$core$Basics$radians = function (t) {
1851	return t;
1852};
1853var _elm_lang$core$Basics$GT = {ctor: 'GT'};
1854var _elm_lang$core$Basics$EQ = {ctor: 'EQ'};
1855var _elm_lang$core$Basics$LT = {ctor: 'LT'};
1856var _elm_lang$core$Basics$JustOneMore = function (a) {
1857	return {ctor: 'JustOneMore', _0: a};
1858};
1859
1860var _elm_lang$core$Maybe$withDefault = F2(
1861	function ($default, maybe) {
1862		var _p0 = maybe;
1863		if (_p0.ctor === 'Just') {
1864			return _p0._0;
1865		} else {
1866			return $default;
1867		}
1868	});
1869var _elm_lang$core$Maybe$Nothing = {ctor: 'Nothing'};
1870var _elm_lang$core$Maybe$andThen = F2(
1871	function (callback, maybeValue) {
1872		var _p1 = maybeValue;
1873		if (_p1.ctor === 'Just') {
1874			return callback(_p1._0);
1875		} else {
1876			return _elm_lang$core$Maybe$Nothing;
1877		}
1878	});
1879var _elm_lang$core$Maybe$Just = function (a) {
1880	return {ctor: 'Just', _0: a};
1881};
1882var _elm_lang$core$Maybe$map = F2(
1883	function (f, maybe) {
1884		var _p2 = maybe;
1885		if (_p2.ctor === 'Just') {
1886			return _elm_lang$core$Maybe$Just(
1887				f(_p2._0));
1888		} else {
1889			return _elm_lang$core$Maybe$Nothing;
1890		}
1891	});
1892var _elm_lang$core$Maybe$map2 = F3(
1893	function (func, ma, mb) {
1894		var _p3 = {ctor: '_Tuple2', _0: ma, _1: mb};
1895		if (((_p3.ctor === '_Tuple2') && (_p3._0.ctor === 'Just')) && (_p3._1.ctor === 'Just')) {
1896			return _elm_lang$core$Maybe$Just(
1897				A2(func, _p3._0._0, _p3._1._0));
1898		} else {
1899			return _elm_lang$core$Maybe$Nothing;
1900		}
1901	});
1902var _elm_lang$core$Maybe$map3 = F4(
1903	function (func, ma, mb, mc) {
1904		var _p4 = {ctor: '_Tuple3', _0: ma, _1: mb, _2: mc};
1905		if ((((_p4.ctor === '_Tuple3') && (_p4._0.ctor === 'Just')) && (_p4._1.ctor === 'Just')) && (_p4._2.ctor === 'Just')) {
1906			return _elm_lang$core$Maybe$Just(
1907				A3(func, _p4._0._0, _p4._1._0, _p4._2._0));
1908		} else {
1909			return _elm_lang$core$Maybe$Nothing;
1910		}
1911	});
1912var _elm_lang$core$Maybe$map4 = F5(
1913	function (func, ma, mb, mc, md) {
1914		var _p5 = {ctor: '_Tuple4', _0: ma, _1: mb, _2: mc, _3: md};
1915		if (((((_p5.ctor === '_Tuple4') && (_p5._0.ctor === 'Just')) && (_p5._1.ctor === 'Just')) && (_p5._2.ctor === 'Just')) && (_p5._3.ctor === 'Just')) {
1916			return _elm_lang$core$Maybe$Just(
1917				A4(func, _p5._0._0, _p5._1._0, _p5._2._0, _p5._3._0));
1918		} else {
1919			return _elm_lang$core$Maybe$Nothing;
1920		}
1921	});
1922var _elm_lang$core$Maybe$map5 = F6(
1923	function (func, ma, mb, mc, md, me) {
1924		var _p6 = {ctor: '_Tuple5', _0: ma, _1: mb, _2: mc, _3: md, _4: me};
1925		if ((((((_p6.ctor === '_Tuple5') && (_p6._0.ctor === 'Just')) && (_p6._1.ctor === 'Just')) && (_p6._2.ctor === 'Just')) && (_p6._3.ctor === 'Just')) && (_p6._4.ctor === 'Just')) {
1926			return _elm_lang$core$Maybe$Just(
1927				A5(func, _p6._0._0, _p6._1._0, _p6._2._0, _p6._3._0, _p6._4._0));
1928		} else {
1929			return _elm_lang$core$Maybe$Nothing;
1930		}
1931	});
1932
1933//import Native.Utils //
1934
1935var _elm_lang$core$Native_List = function() {
1936
1937var Nil = { ctor: '[]' };
1938
1939function Cons(hd, tl)
1940{
1941	return { ctor: '::', _0: hd, _1: tl };
1942}
1943
1944function fromArray(arr)
1945{
1946	var out = Nil;
1947	for (var i = arr.length; i--; )
1948	{
1949		out = Cons(arr[i], out);
1950	}
1951	return out;
1952}
1953
1954function toArray(xs)
1955{
1956	var out = [];
1957	while (xs.ctor !== '[]')
1958	{
1959		out.push(xs._0);
1960		xs = xs._1;
1961	}
1962	return out;
1963}
1964
1965function foldr(f, b, xs)
1966{
1967	var arr = toArray(xs);
1968	var acc = b;
1969	for (var i = arr.length; i--; )
1970	{
1971		acc = A2(f, arr[i], acc);
1972	}
1973	return acc;
1974}
1975
1976function map2(f, xs, ys)
1977{
1978	var arr = [];
1979	while (xs.ctor !== '[]' && ys.ctor !== '[]')
1980	{
1981		arr.push(A2(f, xs._0, ys._0));
1982		xs = xs._1;
1983		ys = ys._1;
1984	}
1985	return fromArray(arr);
1986}
1987
1988function map3(f, xs, ys, zs)
1989{
1990	var arr = [];
1991	while (xs.ctor !== '[]' && ys.ctor !== '[]' && zs.ctor !== '[]')
1992	{
1993		arr.push(A3(f, xs._0, ys._0, zs._0));
1994		xs = xs._1;
1995		ys = ys._1;
1996		zs = zs._1;
1997	}
1998	return fromArray(arr);
1999}
2000
2001function map4(f, ws, xs, ys, zs)
2002{
2003	var arr = [];
2004	while (   ws.ctor !== '[]'
2005		   && xs.ctor !== '[]'
2006		   && ys.ctor !== '[]'
2007		   && zs.ctor !== '[]')
2008	{
2009		arr.push(A4(f, ws._0, xs._0, ys._0, zs._0));
2010		ws = ws._1;
2011		xs = xs._1;
2012		ys = ys._1;
2013		zs = zs._1;
2014	}
2015	return fromArray(arr);
2016}
2017
2018function map5(f, vs, ws, xs, ys, zs)
2019{
2020	var arr = [];
2021	while (   vs.ctor !== '[]'
2022		   && ws.ctor !== '[]'
2023		   && xs.ctor !== '[]'
2024		   && ys.ctor !== '[]'
2025		   && zs.ctor !== '[]')
2026	{
2027		arr.push(A5(f, vs._0, ws._0, xs._0, ys._0, zs._0));
2028		vs = vs._1;
2029		ws = ws._1;
2030		xs = xs._1;
2031		ys = ys._1;
2032		zs = zs._1;
2033	}
2034	return fromArray(arr);
2035}
2036
2037function sortBy(f, xs)
2038{
2039	return fromArray(toArray(xs).sort(function(a, b) {
2040		return _elm_lang$core$Native_Utils.cmp(f(a), f(b));
2041	}));
2042}
2043
2044function sortWith(f, xs)
2045{
2046	return fromArray(toArray(xs).sort(function(a, b) {
2047		var ord = f(a)(b).ctor;
2048		return ord === 'EQ' ? 0 : ord === 'LT' ? -1 : 1;
2049	}));
2050}
2051
2052return {
2053	Nil: Nil,
2054	Cons: Cons,
2055	cons: F2(Cons),
2056	toArray: toArray,
2057	fromArray: fromArray,
2058
2059	foldr: F3(foldr),
2060
2061	map2: F3(map2),
2062	map3: F4(map3),
2063	map4: F5(map4),
2064	map5: F6(map5),
2065	sortBy: F2(sortBy),
2066	sortWith: F2(sortWith)
2067};
2068
2069}();
2070var _elm_lang$core$List$sortWith = _elm_lang$core$Native_List.sortWith;
2071var _elm_lang$core$List$sortBy = _elm_lang$core$Native_List.sortBy;
2072var _elm_lang$core$List$sort = function (xs) {
2073	return A2(_elm_lang$core$List$sortBy, _elm_lang$core$Basics$identity, xs);
2074};
2075var _elm_lang$core$List$singleton = function (value) {
2076	return {
2077		ctor: '::',
2078		_0: value,
2079		_1: {ctor: '[]'}
2080	};
2081};
2082var _elm_lang$core$List$drop = F2(
2083	function (n, list) {
2084		drop:
2085		while (true) {
2086			if (_elm_lang$core$Native_Utils.cmp(n, 0) < 1) {
2087				return list;
2088			} else {
2089				var _p0 = list;
2090				if (_p0.ctor === '[]') {
2091					return list;
2092				} else {
2093					var _v1 = n - 1,
2094						_v2 = _p0._1;
2095					n = _v1;
2096					list = _v2;
2097					continue drop;
2098				}
2099			}
2100		}
2101	});
2102var _elm_lang$core$List$map5 = _elm_lang$core$Native_List.map5;
2103var _elm_lang$core$List$map4 = _elm_lang$core$Native_List.map4;
2104var _elm_lang$core$List$map3 = _elm_lang$core$Native_List.map3;
2105var _elm_lang$core$List$map2 = _elm_lang$core$Native_List.map2;
2106var _elm_lang$core$List$any = F2(
2107	function (isOkay, list) {
2108		any:
2109		while (true) {
2110			var _p1 = list;
2111			if (_p1.ctor === '[]') {
2112				return false;
2113			} else {
2114				if (isOkay(_p1._0)) {
2115					return true;
2116				} else {
2117					var _v4 = isOkay,
2118						_v5 = _p1._1;
2119					isOkay = _v4;
2120					list = _v5;
2121					continue any;
2122				}
2123			}
2124		}
2125	});
2126var _elm_lang$core$List$all = F2(
2127	function (isOkay, list) {
2128		return !A2(
2129			_elm_lang$core$List$any,
2130			function (_p2) {
2131				return !isOkay(_p2);
2132			},
2133			list);
2134	});
2135var _elm_lang$core$List$foldr = _elm_lang$core$Native_List.foldr;
2136var _elm_lang$core$List$foldl = F3(
2137	function (func, acc, list) {
2138		foldl:
2139		while (true) {
2140			var _p3 = list;
2141			if (_p3.ctor === '[]') {
2142				return acc;
2143			} else {
2144				var _v7 = func,
2145					_v8 = A2(func, _p3._0, acc),
2146					_v9 = _p3._1;
2147				func = _v7;
2148				acc = _v8;
2149				list = _v9;
2150				continue foldl;
2151			}
2152		}
2153	});
2154var _elm_lang$core$List$length = function (xs) {
2155	return A3(
2156		_elm_lang$core$List$foldl,
2157		F2(
2158			function (_p4, i) {
2159				return i + 1;
2160			}),
2161		0,
2162		xs);
2163};
2164var _elm_lang$core$List$sum = function (numbers) {
2165	return A3(
2166		_elm_lang$core$List$foldl,
2167		F2(
2168			function (x, y) {
2169				return x + y;
2170			}),
2171		0,
2172		numbers);
2173};
2174var _elm_lang$core$List$product = function (numbers) {
2175	return A3(
2176		_elm_lang$core$List$foldl,
2177		F2(
2178			function (x, y) {
2179				return x * y;
2180			}),
2181		1,
2182		numbers);
2183};
2184var _elm_lang$core$List$maximum = function (list) {
2185	var _p5 = list;
2186	if (_p5.ctor === '::') {
2187		return _elm_lang$core$Maybe$Just(
2188			A3(_elm_lang$core$List$foldl, _elm_lang$core$Basics$max, _p5._0, _p5._1));
2189	} else {
2190		return _elm_lang$core$Maybe$Nothing;
2191	}
2192};
2193var _elm_lang$core$List$minimum = function (list) {
2194	var _p6 = list;
2195	if (_p6.ctor === '::') {
2196		return _elm_lang$core$Maybe$Just(
2197			A3(_elm_lang$core$List$foldl, _elm_lang$core$Basics$min, _p6._0, _p6._1));
2198	} else {
2199		return _elm_lang$core$Maybe$Nothing;
2200	}
2201};
2202var _elm_lang$core$List$member = F2(
2203	function (x, xs) {
2204		return A2(
2205			_elm_lang$core$List$any,
2206			function (a) {
2207				return _elm_lang$core$Native_Utils.eq(a, x);
2208			},
2209			xs);
2210	});
2211var _elm_lang$core$List$isEmpty = function (xs) {
2212	var _p7 = xs;
2213	if (_p7.ctor === '[]') {
2214		return true;
2215	} else {
2216		return false;
2217	}
2218};
2219var _elm_lang$core$List$tail = function (list) {
2220	var _p8 = list;
2221	if (_p8.ctor === '::') {
2222		return _elm_lang$core$Maybe$Just(_p8._1);
2223	} else {
2224		return _elm_lang$core$Maybe$Nothing;
2225	}
2226};
2227var _elm_lang$core$List$head = function (list) {
2228	var _p9 = list;
2229	if (_p9.ctor === '::') {
2230		return _elm_lang$core$Maybe$Just(_p9._0);
2231	} else {
2232		return _elm_lang$core$Maybe$Nothing;
2233	}
2234};
2235var _elm_lang$core$List_ops = _elm_lang$core$List_ops || {};
2236_elm_lang$core$List_ops['::'] = _elm_lang$core$Native_List.cons;
2237var _elm_lang$core$List$map = F2(
2238	function (f, xs) {
2239		return A3(
2240			_elm_lang$core$List$foldr,
2241			F2(
2242				function (x, acc) {
2243					return {
2244						ctor: '::',
2245						_0: f(x),
2246						_1: acc
2247					};
2248				}),
2249			{ctor: '[]'},
2250			xs);
2251	});
2252var _elm_lang$core$List$filter = F2(
2253	function (pred, xs) {
2254		var conditionalCons = F2(
2255			function (front, back) {
2256				return pred(front) ? {ctor: '::', _0: front, _1: back} : back;
2257			});
2258		return A3(
2259			_elm_lang$core$List$foldr,
2260			conditionalCons,
2261			{ctor: '[]'},
2262			xs);
2263	});
2264var _elm_lang$core$List$maybeCons = F3(
2265	function (f, mx, xs) {
2266		var _p10 = f(mx);
2267		if (_p10.ctor === 'Just') {
2268			return {ctor: '::', _0: _p10._0, _1: xs};
2269		} else {
2270			return xs;
2271		}
2272	});
2273var _elm_lang$core$List$filterMap = F2(
2274	function (f, xs) {
2275		return A3(
2276			_elm_lang$core$List$foldr,
2277			_elm_lang$core$List$maybeCons(f),
2278			{ctor: '[]'},
2279			xs);
2280	});
2281var _elm_lang$core$List$reverse = function (list) {
2282	return A3(
2283		_elm_lang$core$List$foldl,
2284		F2(
2285			function (x, y) {
2286				return {ctor: '::', _0: x, _1: y};
2287			}),
2288		{ctor: '[]'},
2289		list);
2290};
2291var _elm_lang$core$List$scanl = F3(
2292	function (f, b, xs) {
2293		var scan1 = F2(
2294			function (x, accAcc) {
2295				var _p11 = accAcc;
2296				if (_p11.ctor === '::') {
2297					return {
2298						ctor: '::',
2299						_0: A2(f, x, _p11._0),
2300						_1: accAcc
2301					};
2302				} else {
2303					return {ctor: '[]'};
2304				}
2305			});
2306		return _elm_lang$core$List$reverse(
2307			A3(
2308				_elm_lang$core$List$foldl,
2309				scan1,
2310				{
2311					ctor: '::',
2312					_0: b,
2313					_1: {ctor: '[]'}
2314				},
2315				xs));
2316	});
2317var _elm_lang$core$List$append = F2(
2318	function (xs, ys) {
2319		var _p12 = ys;
2320		if (_p12.ctor === '[]') {
2321			return xs;
2322		} else {
2323			return A3(
2324				_elm_lang$core$List$foldr,
2325				F2(
2326					function (x, y) {
2327						return {ctor: '::', _0: x, _1: y};
2328					}),
2329				ys,
2330				xs);
2331		}
2332	});
2333var _elm_lang$core$List$concat = function (lists) {
2334	return A3(
2335		_elm_lang$core$List$foldr,
2336		_elm_lang$core$List$append,
2337		{ctor: '[]'},
2338		lists);
2339};
2340var _elm_lang$core$List$concatMap = F2(
2341	function (f, list) {
2342		return _elm_lang$core$List$concat(
2343			A2(_elm_lang$core$List$map, f, list));
2344	});
2345var _elm_lang$core$List$partition = F2(
2346	function (pred, list) {
2347		var step = F2(
2348			function (x, _p13) {
2349				var _p14 = _p13;
2350				var _p16 = _p14._0;
2351				var _p15 = _p14._1;
2352				return pred(x) ? {
2353					ctor: '_Tuple2',
2354					_0: {ctor: '::', _0: x, _1: _p16},
2355					_1: _p15
2356				} : {
2357					ctor: '_Tuple2',
2358					_0: _p16,
2359					_1: {ctor: '::', _0: x, _1: _p15}
2360				};
2361			});
2362		return A3(
2363			_elm_lang$core$List$foldr,
2364			step,
2365			{
2366				ctor: '_Tuple2',
2367				_0: {ctor: '[]'},
2368				_1: {ctor: '[]'}
2369			},
2370			list);
2371	});
2372var _elm_lang$core$List$unzip = function (pairs) {
2373	var step = F2(
2374		function (_p18, _p17) {
2375			var _p19 = _p18;
2376			var _p20 = _p17;
2377			return {
2378				ctor: '_Tuple2',
2379				_0: {ctor: '::', _0: _p19._0, _1: _p20._0},
2380				_1: {ctor: '::', _0: _p19._1, _1: _p20._1}
2381			};
2382		});
2383	return A3(
2384		_elm_lang$core$List$foldr,
2385		step,
2386		{
2387			ctor: '_Tuple2',
2388			_0: {ctor: '[]'},
2389			_1: {ctor: '[]'}
2390		},
2391		pairs);
2392};
2393var _elm_lang$core$List$intersperse = F2(
2394	function (sep, xs) {
2395		var _p21 = xs;
2396		if (_p21.ctor === '[]') {
2397			return {ctor: '[]'};
2398		} else {
2399			var step = F2(
2400				function (x, rest) {
2401					return {
2402						ctor: '::',
2403						_0: sep,
2404						_1: {ctor: '::', _0: x, _1: rest}
2405					};
2406				});
2407			var spersed = A3(
2408				_elm_lang$core$List$foldr,
2409				step,
2410				{ctor: '[]'},
2411				_p21._1);
2412			return {ctor: '::', _0: _p21._0, _1: spersed};
2413		}
2414	});
2415var _elm_lang$core$List$takeReverse = F3(
2416	function (n, list, taken) {
2417		takeReverse:
2418		while (true) {
2419			if (_elm_lang$core$Native_Utils.cmp(n, 0) < 1) {
2420				return taken;
2421			} else {
2422				var _p22 = list;
2423				if (_p22.ctor === '[]') {
2424					return taken;
2425				} else {
2426					var _v23 = n - 1,
2427						_v24 = _p22._1,
2428						_v25 = {ctor: '::', _0: _p22._0, _1: taken};
2429					n = _v23;
2430					list = _v24;
2431					taken = _v25;
2432					continue takeReverse;
2433				}
2434			}
2435		}
2436	});
2437var _elm_lang$core$List$takeTailRec = F2(
2438	function (n, list) {
2439		return _elm_lang$core$List$reverse(
2440			A3(
2441				_elm_lang$core$List$takeReverse,
2442				n,
2443				list,
2444				{ctor: '[]'}));
2445	});
2446var _elm_lang$core$List$takeFast = F3(
2447	function (ctr, n, list) {
2448		if (_elm_lang$core$Native_Utils.cmp(n, 0) < 1) {
2449			return {ctor: '[]'};
2450		} else {
2451			var _p23 = {ctor: '_Tuple2', _0: n, _1: list};
2452			_v26_5:
2453			do {
2454				_v26_1:
2455				do {
2456					if (_p23.ctor === '_Tuple2') {
2457						if (_p23._1.ctor === '[]') {
2458							return list;
2459						} else {
2460							if (_p23._1._1.ctor === '::') {
2461								switch (_p23._0) {
2462									case 1:
2463										break _v26_1;
2464									case 2:
2465										return {
2466											ctor: '::',
2467											_0: _p23._1._0,
2468											_1: {
2469												ctor: '::',
2470												_0: _p23._1._1._0,
2471												_1: {ctor: '[]'}
2472											}
2473										};
2474									case 3:
2475										if (_p23._1._1._1.ctor === '::') {
2476											return {
2477												ctor: '::',
2478												_0: _p23._1._0,
2479												_1: {
2480													ctor: '::',
2481													_0: _p23._1._1._0,
2482													_1: {
2483														ctor: '::',
2484														_0: _p23._1._1._1._0,
2485														_1: {ctor: '[]'}
2486													}
2487												}
2488											};
2489										} else {
2490											break _v26_5;
2491										}
2492									default:
2493										if ((_p23._1._1._1.ctor === '::') && (_p23._1._1._1._1.ctor === '::')) {
2494											var _p28 = _p23._1._1._1._0;
2495											var _p27 = _p23._1._1._0;
2496											var _p26 = _p23._1._0;
2497											var _p25 = _p23._1._1._1._1._0;
2498											var _p24 = _p23._1._1._1._1._1;
2499											return (_elm_lang$core$Native_Utils.cmp(ctr, 1000) > 0) ? {
2500												ctor: '::',
2501												_0: _p26,
2502												_1: {
2503													ctor: '::',
2504													_0: _p27,
2505													_1: {
2506														ctor: '::',
2507														_0: _p28,
2508														_1: {
2509															ctor: '::',
2510															_0: _p25,
2511															_1: A2(_elm_lang$core$List$takeTailRec, n - 4, _p24)
2512														}
2513													}
2514												}
2515											} : {
2516												ctor: '::',
2517												_0: _p26,
2518												_1: {
2519													ctor: '::',
2520													_0: _p27,
2521													_1: {
2522														ctor: '::',
2523														_0: _p28,
2524														_1: {
2525															ctor: '::',
2526															_0: _p25,
2527															_1: A3(_elm_lang$core$List$takeFast, ctr + 1, n - 4, _p24)
2528														}
2529													}
2530												}
2531											};
2532										} else {
2533											break _v26_5;
2534										}
2535								}
2536							} else {
2537								if (_p23._0 === 1) {
2538									break _v26_1;
2539								} else {
2540									break _v26_5;
2541								}
2542							}
2543						}
2544					} else {
2545						break _v26_5;
2546					}
2547				} while(false);
2548				return {
2549					ctor: '::',
2550					_0: _p23._1._0,
2551					_1: {ctor: '[]'}
2552				};
2553			} while(false);
2554			return list;
2555		}
2556	});
2557var _elm_lang$core$List$take = F2(
2558	function (n, list) {
2559		return A3(_elm_lang$core$List$takeFast, 0, n, list);
2560	});
2561var _elm_lang$core$List$repeatHelp = F3(
2562	function (result, n, value) {
2563		repeatHelp:
2564		while (true) {
2565			if (_elm_lang$core$Native_Utils.cmp(n, 0) < 1) {
2566				return result;
2567			} else {
2568				var _v27 = {ctor: '::', _0: value, _1: result},
2569					_v28 = n - 1,
2570					_v29 = value;
2571				result = _v27;
2572				n = _v28;
2573				value = _v29;
2574				continue repeatHelp;
2575			}
2576		}
2577	});
2578var _elm_lang$core$List$repeat = F2(
2579	function (n, value) {
2580		return A3(
2581			_elm_lang$core$List$repeatHelp,
2582			{ctor: '[]'},
2583			n,
2584			value);
2585	});
2586var _elm_lang$core$List$rangeHelp = F3(
2587	function (lo, hi, list) {
2588		rangeHelp:
2589		while (true) {
2590			if (_elm_lang$core$Native_Utils.cmp(lo, hi) < 1) {
2591				var _v30 = lo,
2592					_v31 = hi - 1,
2593					_v32 = {ctor: '::', _0: hi, _1: list};
2594				lo = _v30;
2595				hi = _v31;
2596				list = _v32;
2597				continue rangeHelp;
2598			} else {
2599				return list;
2600			}
2601		}
2602	});
2603var _elm_lang$core$List$range = F2(
2604	function (lo, hi) {
2605		return A3(
2606			_elm_lang$core$List$rangeHelp,
2607			lo,
2608			hi,
2609			{ctor: '[]'});
2610	});
2611var _elm_lang$core$List$indexedMap = F2(
2612	function (f, xs) {
2613		return A3(
2614			_elm_lang$core$List$map2,
2615			f,
2616			A2(
2617				_elm_lang$core$List$range,
2618				0,
2619				_elm_lang$core$List$length(xs) - 1),
2620			xs);
2621	});
2622
2623var _elm_lang$core$Array$append = _elm_lang$core$Native_Array.append;
2624var _elm_lang$core$Array$length = _elm_lang$core$Native_Array.length;
2625var _elm_lang$core$Array$isEmpty = function (array) {
2626	return _elm_lang$core$Native_Utils.eq(
2627		_elm_lang$core$Array$length(array),
2628		0);
2629};
2630var _elm_lang$core$Array$slice = _elm_lang$core$Native_Array.slice;
2631var _elm_lang$core$Array$set = _elm_lang$core$Native_Array.set;
2632var _elm_lang$core$Array$get = F2(
2633	function (i, array) {
2634		return ((_elm_lang$core$Native_Utils.cmp(0, i) < 1) && (_elm_lang$core$Native_Utils.cmp(
2635			i,
2636			_elm_lang$core$Native_Array.length(array)) < 0)) ? _elm_lang$core$Maybe$Just(
2637			A2(_elm_lang$core$Native_Array.get, i, array)) : _elm_lang$core$Maybe$Nothing;
2638	});
2639var _elm_lang$core$Array$push = _elm_lang$core$Native_Array.push;
2640var _elm_lang$core$Array$empty = _elm_lang$core$Native_Array.empty;
2641var _elm_lang$core$Array$filter = F2(
2642	function (isOkay, arr) {
2643		var update = F2(
2644			function (x, xs) {
2645				return isOkay(x) ? A2(_elm_lang$core$Native_Array.push, x, xs) : xs;
2646			});
2647		return A3(_elm_lang$core$Native_Array.foldl, update, _elm_lang$core$Native_Array.empty, arr);
2648	});
2649var _elm_lang$core$Array$foldr = _elm_lang$core$Native_Array.foldr;
2650var _elm_lang$core$Array$foldl = _elm_lang$core$Native_Array.foldl;
2651var _elm_lang$core$Array$indexedMap = _elm_lang$core$Native_Array.indexedMap;
2652var _elm_lang$core$Array$map = _elm_lang$core$Native_Array.map;
2653var _elm_lang$core$Array$toIndexedList = function (array) {
2654	return A3(
2655		_elm_lang$core$List$map2,
2656		F2(
2657			function (v0, v1) {
2658				return {ctor: '_Tuple2', _0: v0, _1: v1};
2659			}),
2660		A2(
2661			_elm_lang$core$List$range,
2662			0,
2663			_elm_lang$core$Native_Array.length(array) - 1),
2664		_elm_lang$core$Native_Array.toList(array));
2665};
2666var _elm_lang$core$Array$toList = _elm_lang$core$Native_Array.toList;
2667var _elm_lang$core$Array$fromList = _elm_lang$core$Native_Array.fromList;
2668var _elm_lang$core$Array$initialize = _elm_lang$core$Native_Array.initialize;
2669var _elm_lang$core$Array$repeat = F2(
2670	function (n, e) {
2671		return A2(
2672			_elm_lang$core$Array$initialize,
2673			n,
2674			_elm_lang$core$Basics$always(e));
2675	});
2676var _elm_lang$core$Array$Array = {ctor: 'Array'};
2677
2678//import Native.Utils //
2679
2680var _elm_lang$core$Native_Debug = function() {
2681
2682function log(tag, value)
2683{
2684	var msg = tag + ': ' + _elm_lang$core$Native_Utils.toString(value);
2685	var process = process || {};
2686	if (process.stdout)
2687	{
2688		process.stdout.write(msg);
2689	}
2690	else
2691	{
2692		console.log(msg);
2693	}
2694	return value;
2695}
2696
2697function crash(message)
2698{
2699	throw new Error(message);
2700}
2701
2702return {
2703	crash: crash,
2704	log: F2(log)
2705};
2706
2707}();
2708//import Maybe, Native.List, Native.Utils, Result //
2709
2710var _elm_lang$core$Native_String = function() {
2711
2712function isEmpty(str)
2713{
2714	return str.length === 0;
2715}
2716function cons(chr, str)
2717{
2718	return chr + str;
2719}
2720function uncons(str)
2721{
2722	var hd = str[0];
2723	if (hd)
2724	{
2725		return _elm_lang$core$Maybe$Just(_elm_lang$core$Native_Utils.Tuple2(_elm_lang$core$Native_Utils.chr(hd), str.slice(1)));
2726	}
2727	return _elm_lang$core$Maybe$Nothing;
2728}
2729function append(a, b)
2730{
2731	return a + b;
2732}
2733function concat(strs)
2734{
2735	return _elm_lang$core$Native_List.toArray(strs).join('');
2736}
2737function length(str)
2738{
2739	return str.length;
2740}
2741function map(f, str)
2742{
2743	var out = str.split('');
2744	for (var i = out.length; i--; )
2745	{
2746		out[i] = f(_elm_lang$core$Native_Utils.chr(out[i]));
2747	}
2748	return out.join('');
2749}
2750function filter(pred, str)
2751{
2752	return str.split('').map(_elm_lang$core$Native_Utils.chr).filter(pred).join('');
2753}
2754function reverse(str)
2755{
2756	return str.split('').reverse().join('');
2757}
2758function foldl(f, b, str)
2759{
2760	var len = str.length;
2761	for (var i = 0; i < len; ++i)
2762	{
2763		b = A2(f, _elm_lang$core$Native_Utils.chr(str[i]), b);
2764	}
2765	return b;
2766}
2767function foldr(f, b, str)
2768{
2769	for (var i = str.length; i--; )
2770	{
2771		b = A2(f, _elm_lang$core$Native_Utils.chr(str[i]), b);
2772	}
2773	return b;
2774}
2775function split(sep, str)
2776{
2777	return _elm_lang$core$Native_List.fromArray(str.split(sep));
2778}
2779function join(sep, strs)
2780{
2781	return _elm_lang$core$Native_List.toArray(strs).join(sep);
2782}
2783function repeat(n, str)
2784{
2785	var result = '';
2786	while (n > 0)
2787	{
2788		if (n & 1)
2789		{
2790			result += str;
2791		}
2792		n >>= 1, str += str;
2793	}
2794	return result;
2795}
2796function slice(start, end, str)
2797{
2798	return str.slice(start, end);
2799}
2800function left(n, str)
2801{
2802	return n < 1 ? '' : str.slice(0, n);
2803}
2804function right(n, str)
2805{
2806	return n < 1 ? '' : str.slice(-n);
2807}
2808function dropLeft(n, str)
2809{
2810	return n < 1 ? str : str.slice(n);
2811}
2812function dropRight(n, str)
2813{
2814	return n < 1 ? str : str.slice(0, -n);
2815}
2816function pad(n, chr, str)
2817{
2818	var half = (n - str.length) / 2;
2819	return repeat(Math.ceil(half), chr) + str + repeat(half | 0, chr);
2820}
2821function padRight(n, chr, str)
2822{
2823	return str + repeat(n - str.length, chr);
2824}
2825function padLeft(n, chr, str)
2826{
2827	return repeat(n - str.length, chr) + str;
2828}
2829
2830function trim(str)
2831{
2832	return str.trim();
2833}
2834function trimLeft(str)
2835{
2836	return str.replace(/^\s+/, '');
2837}
2838function trimRight(str)
2839{
2840	return str.replace(/\s+$/, '');
2841}
2842
2843function words(str)
2844{
2845	return _elm_lang$core$Native_List.fromArray(str.trim().split(/\s+/g));
2846}
2847function lines(str)
2848{
2849	return _elm_lang$core$Native_List.fromArray(str.split(/\r\n|\r|\n/g));
2850}
2851
2852function toUpper(str)
2853{
2854	return str.toUpperCase();
2855}
2856function toLower(str)
2857{
2858	return str.toLowerCase();
2859}
2860
2861function any(pred, str)
2862{
2863	for (var i = str.length; i--; )
2864	{
2865		if (pred(_elm_lang$core$Native_Utils.chr(str[i])))
2866		{
2867			return true;
2868		}
2869	}
2870	return false;
2871}
2872function all(pred, str)
2873{
2874	for (var i = str.length; i--; )
2875	{
2876		if (!pred(_elm_lang$core$Native_Utils.chr(str[i])))
2877		{
2878			return false;
2879		}
2880	}
2881	return true;
2882}
2883
2884function contains(sub, str)
2885{
2886	return str.indexOf(sub) > -1;
2887}
2888function startsWith(sub, str)
2889{
2890	return str.indexOf(sub) === 0;
2891}
2892function endsWith(sub, str)
2893{
2894	return str.length >= sub.length &&
2895		str.lastIndexOf(sub) === str.length - sub.length;
2896}
2897function indexes(sub, str)
2898{
2899	var subLen = sub.length;
2900
2901	if (subLen < 1)
2902	{
2903		return _elm_lang$core$Native_List.Nil;
2904	}
2905
2906	var i = 0;
2907	var is = [];
2908
2909	while ((i = str.indexOf(sub, i)) > -1)
2910	{
2911		is.push(i);
2912		i = i + subLen;
2913	}
2914
2915	return _elm_lang$core$Native_List.fromArray(is);
2916}
2917
2918
2919function toInt(s)
2920{
2921	var len = s.length;
2922
2923	// if empty
2924	if (len === 0)
2925	{
2926		return intErr(s);
2927	}
2928
2929	// if hex
2930	var c = s[0];
2931	if (c === '0' && s[1] === 'x')
2932	{
2933		for (var i = 2; i < len; ++i)
2934		{
2935			var c = s[i];
2936			if (('0' <= c && c <= '9') || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f'))
2937			{
2938				continue;
2939			}
2940			return intErr(s);
2941		}
2942		return _elm_lang$core$Result$Ok(parseInt(s, 16));
2943	}
2944
2945	// is decimal
2946	if (c > '9' || (c < '0' && c !== '-' && c !== '+'))
2947	{
2948		return intErr(s);
2949	}
2950	for (var i = 1; i < len; ++i)
2951	{
2952		var c = s[i];
2953		if (c < '0' || '9' < c)
2954		{
2955			return intErr(s);
2956		}
2957	}
2958
2959	return _elm_lang$core$Result$Ok(parseInt(s, 10));
2960}
2961
2962function intErr(s)
2963{
2964	return _elm_lang$core$Result$Err("could not convert string '" + s + "' to an Int");
2965}
2966
2967
2968function toFloat(s)
2969{
2970	// check if it is a hex, octal, or binary number
2971	if (s.length === 0 || /[\sxbo]/.test(s))
2972	{
2973		return floatErr(s);
2974	}
2975	var n = +s;
2976	// faster isNaN check
2977	return n === n ? _elm_lang$core$Result$Ok(n) : floatErr(s);
2978}
2979
2980function floatErr(s)
2981{
2982	return _elm_lang$core$Result$Err("could not convert string '" + s + "' to a Float");
2983}
2984
2985
2986function toList(str)
2987{
2988	return _elm_lang$core$Native_List.fromArray(str.split('').map(_elm_lang$core$Native_Utils.chr));
2989}
2990function fromList(chars)
2991{
2992	return _elm_lang$core$Native_List.toArray(chars).join('');
2993}
2994
2995return {
2996	isEmpty: isEmpty,
2997	cons: F2(cons),
2998	uncons: uncons,
2999	append: F2(append),
3000	concat: concat,
3001	length: length,
3002	map: F2(map),
3003	filter: F2(filter),
3004	reverse: reverse,
3005	foldl: F3(foldl),
3006	foldr: F3(foldr),
3007
3008	split: F2(split),
3009	join: F2(join),
3010	repeat: F2(repeat),
3011
3012	slice: F3(slice),
3013	left: F2(left),
3014	right: F2(right),
3015	dropLeft: F2(dropLeft),
3016	dropRight: F2(dropRight),
3017
3018	pad: F3(pad),
3019	padLeft: F3(padLeft),
3020	padRight: F3(padRight),
3021
3022	trim: trim,
3023	trimLeft: trimLeft,
3024	trimRight: trimRight,
3025
3026	words: words,
3027	lines: lines,
3028
3029	toUpper: toUpper,
3030	toLower: toLower,
3031
3032	any: F2(any),
3033	all: F2(all),
3034
3035	contains: F2(contains),
3036	startsWith: F2(startsWith),
3037	endsWith: F2(endsWith),
3038	indexes: F2(indexes),
3039
3040	toInt: toInt,
3041	toFloat: toFloat,
3042	toList: toList,
3043	fromList: fromList
3044};
3045
3046}();
3047
3048//import Native.Utils //
3049
3050var _elm_lang$core$Native_Char = function() {
3051
3052return {
3053	fromCode: function(c) { return _elm_lang$core$Native_Utils.chr(String.fromCharCode(c)); },
3054	toCode: function(c) { return c.charCodeAt(0); },
3055	toUpper: function(c) { return _elm_lang$core$Native_Utils.chr(c.toUpperCase()); },
3056	toLower: function(c) { return _elm_lang$core$Native_Utils.chr(c.toLowerCase()); },
3057	toLocaleUpper: function(c) { return _elm_lang$core$Native_Utils.chr(c.toLocaleUpperCase()); },
3058	toLocaleLower: function(c) { return _elm_lang$core$Native_Utils.chr(c.toLocaleLowerCase()); }
3059};
3060
3061}();
3062var _elm_lang$core$Char$fromCode = _elm_lang$core$Native_Char.fromCode;
3063var _elm_lang$core$Char$toCode = _elm_lang$core$Native_Char.toCode;
3064var _elm_lang$core$Char$toLocaleLower = _elm_lang$core$Native_Char.toLocaleLower;
3065var _elm_lang$core$Char$toLocaleUpper = _elm_lang$core$Native_Char.toLocaleUpper;
3066var _elm_lang$core$Char$toLower = _elm_lang$core$Native_Char.toLower;
3067var _elm_lang$core$Char$toUpper = _elm_lang$core$Native_Char.toUpper;
3068var _elm_lang$core$Char$isBetween = F3(
3069	function (low, high, $char) {
3070		var code = _elm_lang$core$Char$toCode($char);
3071		return (_elm_lang$core$Native_Utils.cmp(
3072			code,
3073			_elm_lang$core$Char$toCode(low)) > -1) && (_elm_lang$core$Native_Utils.cmp(
3074			code,
3075			_elm_lang$core$Char$toCode(high)) < 1);
3076	});
3077var _elm_lang$core$Char$isUpper = A2(
3078	_elm_lang$core$Char$isBetween,
3079	_elm_lang$core$Native_Utils.chr('A'),
3080	_elm_lang$core$Native_Utils.chr('Z'));
3081var _elm_lang$core$Char$isLower = A2(
3082	_elm_lang$core$Char$isBetween,
3083	_elm_lang$core$Native_Utils.chr('a'),
3084	_elm_lang$core$Native_Utils.chr('z'));
3085var _elm_lang$core$Char$isDigit = A2(
3086	_elm_lang$core$Char$isBetween,
3087	_elm_lang$core$Native_Utils.chr('0'),
3088	_elm_lang$core$Native_Utils.chr('9'));
3089var _elm_lang$core$Char$isOctDigit = A2(
3090	_elm_lang$core$Char$isBetween,
3091	_elm_lang$core$Native_Utils.chr('0'),
3092	_elm_lang$core$Native_Utils.chr('7'));
3093var _elm_lang$core$Char$isHexDigit = function ($char) {
3094	return _elm_lang$core$Char$isDigit($char) || (A3(
3095		_elm_lang$core$Char$isBetween,
3096		_elm_lang$core$Native_Utils.chr('a'),
3097		_elm_lang$core$Native_Utils.chr('f'),
3098		$char) || A3(
3099		_elm_lang$core$Char$isBetween,
3100		_elm_lang$core$Native_Utils.chr('A'),
3101		_elm_lang$core$Native_Utils.chr('F'),
3102		$char));
3103};
3104
3105var _elm_lang$core$Result$toMaybe = function (result) {
3106	var _p0 = result;
3107	if (_p0.ctor === 'Ok') {
3108		return _elm_lang$core$Maybe$Just(_p0._0);
3109	} else {
3110		return _elm_lang$core$Maybe$Nothing;
3111	}
3112};
3113var _elm_lang$core$Result$withDefault = F2(
3114	function (def, result) {
3115		var _p1 = result;
3116		if (_p1.ctor === 'Ok') {
3117			return _p1._0;
3118		} else {
3119			return def;
3120		}
3121	});
3122var _elm_lang$core$Result$Err = function (a) {
3123	return {ctor: 'Err', _0: a};
3124};
3125var _elm_lang$core$Result$andThen = F2(
3126	function (callback, result) {
3127		var _p2 = result;
3128		if (_p2.ctor === 'Ok') {
3129			return callback(_p2._0);
3130		} else {
3131			return _elm_lang$core$Result$Err(_p2._0);
3132		}
3133	});
3134var _elm_lang$core$Result$Ok = function (a) {
3135	return {ctor: 'Ok', _0: a};
3136};
3137var _elm_lang$core$Result$map = F2(
3138	function (func, ra) {
3139		var _p3 = ra;
3140		if (_p3.ctor === 'Ok') {
3141			return _elm_lang$core$Result$Ok(
3142				func(_p3._0));
3143		} else {
3144			return _elm_lang$core$Result$Err(_p3._0);
3145		}
3146	});
3147var _elm_lang$core$Result$map2 = F3(
3148	function (func, ra, rb) {
3149		var _p4 = {ctor: '_Tuple2', _0: ra, _1: rb};
3150		if (_p4._0.ctor === 'Ok') {
3151			if (_p4._1.ctor === 'Ok') {
3152				return _elm_lang$core$Result$Ok(
3153					A2(func, _p4._0._0, _p4._1._0));
3154			} else {
3155				return _elm_lang$core$Result$Err(_p4._1._0);
3156			}
3157		} else {
3158			return _elm_lang$core$Result$Err(_p4._0._0);
3159		}
3160	});
3161var _elm_lang$core$Result$map3 = F4(
3162	function (func, ra, rb, rc) {
3163		var _p5 = {ctor: '_Tuple3', _0: ra, _1: rb, _2: rc};
3164		if (_p5._0.ctor === 'Ok') {
3165			if (_p5._1.ctor === 'Ok') {
3166				if (_p5._2.ctor === 'Ok') {
3167					return _elm_lang$core$Result$Ok(
3168						A3(func, _p5._0._0, _p5._1._0, _p5._2._0));
3169				} else {
3170					return _elm_lang$core$Result$Err(_p5._2._0);
3171				}
3172			} else {
3173				return _elm_lang$core$Result$Err(_p5._1._0);
3174			}
3175		} else {
3176			return _elm_lang$core$Result$Err(_p5._0._0);
3177		}
3178	});
3179var _elm_lang$core$Result$map4 = F5(
3180	function (func, ra, rb, rc, rd) {
3181		var _p6 = {ctor: '_Tuple4', _0: ra, _1: rb, _2: rc, _3: rd};
3182		if (_p6._0.ctor === 'Ok') {
3183			if (_p6._1.ctor === 'Ok') {
3184				if (_p6._2.ctor === 'Ok') {
3185					if (_p6._3.ctor === 'Ok') {
3186						return _elm_lang$core$Result$Ok(
3187							A4(func, _p6._0._0, _p6._1._0, _p6._2._0, _p6._3._0));
3188					} else {
3189						return _elm_lang$core$Result$Err(_p6._3._0);
3190					}
3191				} else {
3192					return _elm_lang$core$Result$Err(_p6._2._0);
3193				}
3194			} else {
3195				return _elm_lang$core$Result$Err(_p6._1._0);
3196			}
3197		} else {
3198			return _elm_lang$core$Result$Err(_p6._0._0);
3199		}
3200	});
3201var _elm_lang$core$Result$map5 = F6(
3202	function (func, ra, rb, rc, rd, re) {
3203		var _p7 = {ctor: '_Tuple5', _0: ra, _1: rb, _2: rc, _3: rd, _4: re};
3204		if (_p7._0.ctor === 'Ok') {
3205			if (_p7._1.ctor === 'Ok') {
3206				if (_p7._2.ctor === 'Ok') {
3207					if (_p7._3.ctor === 'Ok') {
3208						if (_p7._4.ctor === 'Ok') {
3209							return _elm_lang$core$Result$Ok(
3210								A5(func, _p7._0._0, _p7._1._0, _p7._2._0, _p7._3._0, _p7._4._0));
3211						} else {
3212							return _elm_lang$core$Result$Err(_p7._4._0);
3213						}
3214					} else {
3215						return _elm_lang$core$Result$Err(_p7._3._0);
3216					}
3217				} else {
3218					return _elm_lang$core$Result$Err(_p7._2._0);
3219				}
3220			} else {
3221				return _elm_lang$core$Result$Err(_p7._1._0);
3222			}
3223		} else {
3224			return _elm_lang$core$Result$Err(_p7._0._0);
3225		}
3226	});
3227var _elm_lang$core$Result$mapError = F2(
3228	function (f, result) {
3229		var _p8 = result;
3230		if (_p8.ctor === 'Ok') {
3231			return _elm_lang$core$Result$Ok(_p8._0);
3232		} else {
3233			return _elm_lang$core$Result$Err(
3234				f(_p8._0));
3235		}
3236	});
3237var _elm_lang$core$Result$fromMaybe = F2(
3238	function (err, maybe) {
3239		var _p9 = maybe;
3240		if (_p9.ctor === 'Just') {
3241			return _elm_lang$core$Result$Ok(_p9._0);
3242		} else {
3243			return _elm_lang$core$Result$Err(err);
3244		}
3245	});
3246
3247var _elm_lang$core$String$fromList = _elm_lang$core$Native_String.fromList;
3248var _elm_lang$core$String$toList = _elm_lang$core$Native_String.toList;
3249var _elm_lang$core$String$toFloat = _elm_lang$core$Native_String.toFloat;
3250var _elm_lang$core$String$toInt = _elm_lang$core$Native_String.toInt;
3251var _elm_lang$core$String$indices = _elm_lang$core$Native_String.indexes;
3252var _elm_lang$core$String$indexes = _elm_lang$core$Native_String.indexes;
3253var _elm_lang$core$String$endsWith = _elm_lang$core$Native_String.endsWith;
3254var _elm_lang$core$String$startsWith = _elm_lang$core$Native_String.startsWith;
3255var _elm_lang$core$String$contains = _elm_lang$core$Native_String.contains;
3256var _elm_lang$core$String$all = _elm_lang$core$Native_String.all;
3257var _elm_lang$core$String$any = _elm_lang$core$Native_String.any;
3258var _elm_lang$core$String$toLower = _elm_lang$core$Native_String.toLower;
3259var _elm_lang$core$String$toUpper = _elm_lang$core$Native_String.toUpper;
3260var _elm_lang$core$String$lines = _elm_lang$core$Native_String.lines;
3261var _elm_lang$core$String$words = _elm_lang$core$Native_String.words;
3262var _elm_lang$core$String$trimRight = _elm_lang$core$Native_String.trimRight;
3263var _elm_lang$core$String$trimLeft = _elm_lang$core$Native_String.trimLeft;
3264var _elm_lang$core$String$trim = _elm_lang$core$Native_String.trim;
3265var _elm_lang$core$String$padRight = _elm_lang$core$Native_String.padRight;
3266var _elm_lang$core$String$padLeft = _elm_lang$core$Native_String.padLeft;
3267var _elm_lang$core$String$pad = _elm_lang$core$Native_String.pad;
3268var _elm_lang$core$String$dropRight = _elm_lang$core$Native_String.dropRight;
3269var _elm_lang$core$String$dropLeft = _elm_lang$core$Native_String.dropLeft;
3270var _elm_lang$core$String$right = _elm_lang$core$Native_String.right;
3271var _elm_lang$core$String$left = _elm_lang$core$Native_String.left;
3272var _elm_lang$core$String$slice = _elm_lang$core$Native_String.slice;
3273var _elm_lang$core$String$repeat = _elm_lang$core$Native_String.repeat;
3274var _elm_lang$core$String$join = _elm_lang$core$Native_String.join;
3275var _elm_lang$core$String$split = _elm_lang$core$Native_String.split;
3276var _elm_lang$core$String$foldr = _elm_lang$core$Native_String.foldr;
3277var _elm_lang$core$String$foldl = _elm_lang$core$Native_String.foldl;
3278var _elm_lang$core$String$reverse = _elm_lang$core$Native_String.reverse;
3279var _elm_lang$core$String$filter = _elm_lang$core$Native_String.filter;
3280var _elm_lang$core$String$map = _elm_lang$core$Native_String.map;
3281var _elm_lang$core$String$length = _elm_lang$core$Native_String.length;
3282var _elm_lang$core$String$concat = _elm_lang$core$Native_String.concat;
3283var _elm_lang$core$String$append = _elm_lang$core$Native_String.append;
3284var _elm_lang$core$String$uncons = _elm_lang$core$Native_String.uncons;
3285var _elm_lang$core$String$cons = _elm_lang$core$Native_String.cons;
3286var _elm_lang$core$String$fromChar = function ($char) {
3287	return A2(_elm_lang$core$String$cons, $char, '');
3288};
3289var _elm_lang$core$String$isEmpty = _elm_lang$core$Native_String.isEmpty;
3290
3291var _elm_lang$core$Dict$foldr = F3(
3292	function (f, acc, t) {
3293		foldr:
3294		while (true) {
3295			var _p0 = t;
3296			if (_p0.ctor === 'RBEmpty_elm_builtin') {
3297				return acc;
3298			} else {
3299				var _v1 = f,
3300					_v2 = A3(
3301					f,
3302					_p0._1,
3303					_p0._2,
3304					A3(_elm_lang$core$Dict$foldr, f, acc, _p0._4)),
3305					_v3 = _p0._3;
3306				f = _v1;
3307				acc = _v2;
3308				t = _v3;
3309				continue foldr;
3310			}
3311		}
3312	});
3313var _elm_lang$core$Dict$keys = function (dict) {
3314	return A3(
3315		_elm_lang$core$Dict$foldr,
3316		F3(
3317			function (key, value, keyList) {
3318				return {ctor: '::', _0: key, _1: keyList};
3319			}),
3320		{ctor: '[]'},
3321		dict);
3322};
3323var _elm_lang$core$Dict$values = function (dict) {
3324	return A3(
3325		_elm_lang$core$Dict$foldr,
3326		F3(
3327			function (key, value, valueList) {
3328				return {ctor: '::', _0: value, _1: valueList};
3329			}),
3330		{ctor: '[]'},
3331		dict);
3332};
3333var _elm_lang$core$Dict$toList = function (dict) {
3334	return A3(
3335		_elm_lang$core$Dict$foldr,
3336		F3(
3337			function (key, value, list) {
3338				return {
3339					ctor: '::',
3340					_0: {ctor: '_Tuple2', _0: key, _1: value},
3341					_1: list
3342				};
3343			}),
3344		{ctor: '[]'},
3345		dict);
3346};
3347var _elm_lang$core$Dict$foldl = F3(
3348	function (f, acc, dict) {
3349		foldl:
3350		while (true) {
3351			var _p1 = dict;
3352			if (_p1.ctor === 'RBEmpty_elm_builtin') {
3353				return acc;
3354			} else {
3355				var _v5 = f,
3356					_v6 = A3(
3357					f,
3358					_p1._1,
3359					_p1._2,
3360					A3(_elm_lang$core$Dict$foldl, f, acc, _p1._3)),
3361					_v7 = _p1._4;
3362				f = _v5;
3363				acc = _v6;
3364				dict = _v7;
3365				continue foldl;
3366			}
3367		}
3368	});
3369var _elm_lang$core$Dict$merge = F6(
3370	function (leftStep, bothStep, rightStep, leftDict, rightDict, initialResult) {
3371		var stepState = F3(
3372			function (rKey, rValue, _p2) {
3373				stepState:
3374				while (true) {
3375					var _p3 = _p2;
3376					var _p9 = _p3._1;
3377					var _p8 = _p3._0;
3378					var _p4 = _p8;
3379					if (_p4.ctor === '[]') {
3380						return {
3381							ctor: '_Tuple2',
3382							_0: _p8,
3383							_1: A3(rightStep, rKey, rValue, _p9)
3384						};
3385					} else {
3386						var _p7 = _p4._1;
3387						var _p6 = _p4._0._1;
3388						var _p5 = _p4._0._0;
3389						if (_elm_lang$core$Native_Utils.cmp(_p5, rKey) < 0) {
3390							var _v10 = rKey,
3391								_v11 = rValue,
3392								_v12 = {
3393								ctor: '_Tuple2',
3394								_0: _p7,
3395								_1: A3(leftStep, _p5, _p6, _p9)
3396							};
3397							rKey = _v10;
3398							rValue = _v11;
3399							_p2 = _v12;
3400							continue stepState;
3401						} else {
3402							if (_elm_lang$core$Native_Utils.cmp(_p5, rKey) > 0) {
3403								return {
3404									ctor: '_Tuple2',
3405									_0: _p8,
3406									_1: A3(rightStep, rKey, rValue, _p9)
3407								};
3408							} else {
3409								return {
3410									ctor: '_Tuple2',
3411									_0: _p7,
3412									_1: A4(bothStep, _p5, _p6, rValue, _p9)
3413								};
3414							}
3415						}
3416					}
3417				}
3418			});
3419		var _p10 = A3(
3420			_elm_lang$core$Dict$foldl,
3421			stepState,
3422			{
3423				ctor: '_Tuple2',
3424				_0: _elm_lang$core$Dict$toList(leftDict),
3425				_1: initialResult
3426			},
3427			rightDict);
3428		var leftovers = _p10._0;
3429		var intermediateResult = _p10._1;
3430		return A3(
3431			_elm_lang$core$List$foldl,
3432			F2(
3433				function (_p11, result) {
3434					var _p12 = _p11;
3435					return A3(leftStep, _p12._0, _p12._1, result);
3436				}),
3437			intermediateResult,
3438			leftovers);
3439	});
3440var _elm_lang$core$Dict$reportRemBug = F4(
3441	function (msg, c, lgot, rgot) {
3442		return _elm_lang$core$Native_Debug.crash(
3443			_elm_lang$core$String$concat(
3444				{
3445					ctor: '::',
3446					_0: 'Internal red-black tree invariant violated, expected ',
3447					_1: {
3448						ctor: '::',
3449						_0: msg,
3450						_1: {
3451							ctor: '::',
3452							_0: ' and got ',
3453							_1: {
3454								ctor: '::',
3455								_0: _elm_lang$core$Basics$toString(c),
3456								_1: {
3457									ctor: '::',
3458									_0: '/',
3459									_1: {
3460										ctor: '::',
3461										_0: lgot,
3462										_1: {
3463											ctor: '::',
3464											_0: '/',
3465											_1: {
3466												ctor: '::',
3467												_0: rgot,
3468												_1: {
3469													ctor: '::',
3470													_0: '\nPlease report this bug to <https://github.com/elm-lang/core/issues>',
3471													_1: {ctor: '[]'}
3472												}
3473											}
3474										}
3475									}
3476								}
3477							}
3478						}
3479					}
3480				}));
3481	});
3482var _elm_lang$core$Dict$isBBlack = function (dict) {
3483	var _p13 = dict;
3484	_v14_2:
3485	do {
3486		if (_p13.ctor === 'RBNode_elm_builtin') {
3487			if (_p13._0.ctor === 'BBlack') {
3488				return true;
3489			} else {
3490				break _v14_2;
3491			}
3492		} else {
3493			if (_p13._0.ctor === 'LBBlack') {
3494				return true;
3495			} else {
3496				break _v14_2;
3497			}
3498		}
3499	} while(false);
3500	return false;
3501};
3502var _elm_lang$core$Dict$sizeHelp = F2(
3503	function (n, dict) {
3504		sizeHelp:
3505		while (true) {
3506			var _p14 = dict;
3507			if (_p14.ctor === 'RBEmpty_elm_builtin') {
3508				return n;
3509			} else {
3510				var _v16 = A2(_elm_lang$core$Dict$sizeHelp, n + 1, _p14._4),
3511					_v17 = _p14._3;
3512				n = _v16;
3513				dict = _v17;
3514				continue sizeHelp;
3515			}
3516		}
3517	});
3518var _elm_lang$core$Dict$size = function (dict) {
3519	return A2(_elm_lang$core$Dict$sizeHelp, 0, dict);
3520};
3521var _elm_lang$core$Dict$get = F2(
3522	function (targetKey, dict) {
3523		get:
3524		while (true) {
3525			var _p15 = dict;
3526			if (_p15.ctor === 'RBEmpty_elm_builtin') {
3527				return _elm_lang$core$Maybe$Nothing;
3528			} else {
3529				var _p16 = A2(_elm_lang$core$Basics$compare, targetKey, _p15._1);
3530				switch (_p16.ctor) {
3531					case 'LT':
3532						var _v20 = targetKey,
3533							_v21 = _p15._3;
3534						targetKey = _v20;
3535						dict = _v21;
3536						continue get;
3537					case 'EQ':
3538						return _elm_lang$core$Maybe$Just(_p15._2);
3539					default:
3540						var _v22 = targetKey,
3541							_v23 = _p15._4;
3542						targetKey = _v22;
3543						dict = _v23;
3544						continue get;
3545				}
3546			}
3547		}
3548	});
3549var _elm_lang$core$Dict$member = F2(
3550	function (key, dict) {
3551		var _p17 = A2(_elm_lang$core$Dict$get, key, dict);
3552		if (_p17.ctor === 'Just') {
3553			return true;
3554		} else {
3555			return false;
3556		}
3557	});
3558var _elm_lang$core$Dict$maxWithDefault = F3(
3559	function (k, v, r) {
3560		maxWithDefault:
3561		while (true) {
3562			var _p18 = r;
3563			if (_p18.ctor === 'RBEmpty_elm_builtin') {
3564				return {ctor: '_Tuple2', _0: k, _1: v};
3565			} else {
3566				var _v26 = _p18._1,
3567					_v27 = _p18._2,
3568					_v28 = _p18._4;
3569				k = _v26;
3570				v = _v27;
3571				r = _v28;
3572				continue maxWithDefault;
3573			}
3574		}
3575	});
3576var _elm_lang$core$Dict$NBlack = {ctor: 'NBlack'};
3577var _elm_lang$core$Dict$BBlack = {ctor: 'BBlack'};
3578var _elm_lang$core$Dict$Black = {ctor: 'Black'};
3579var _elm_lang$core$Dict$blackish = function (t) {
3580	var _p19 = t;
3581	if (_p19.ctor === 'RBNode_elm_builtin') {
3582		var _p20 = _p19._0;
3583		return _elm_lang$core$Native_Utils.eq(_p20, _elm_lang$core$Dict$Black) || _elm_lang$core$Native_Utils.eq(_p20, _elm_lang$core$Dict$BBlack);
3584	} else {
3585		return true;
3586	}
3587};
3588var _elm_lang$core$Dict$Red = {ctor: 'Red'};
3589var _elm_lang$core$Dict$moreBlack = function (color) {
3590	var _p21 = color;
3591	switch (_p21.ctor) {
3592		case 'Black':
3593			return _elm_lang$core$Dict$BBlack;
3594		case 'Red':
3595			return _elm_lang$core$Dict$Black;
3596		case 'NBlack':
3597			return _elm_lang$core$Dict$Red;
3598		default:
3599			return _elm_lang$core$Native_Debug.crash('Can\'t make a double black node more black!');
3600	}
3601};
3602var _elm_lang$core$Dict$lessBlack = function (color) {
3603	var _p22 = color;
3604	switch (_p22.ctor) {
3605		case 'BBlack':
3606			return _elm_lang$core$Dict$Black;
3607		case 'Black':
3608			return _elm_lang$core$Dict$Red;
3609		case 'Red':
3610			return _elm_lang$core$Dict$NBlack;
3611		default:
3612			return _elm_lang$core$Native_Debug.crash('Can\'t make a negative black node less black!');
3613	}
3614};
3615var _elm_lang$core$Dict$LBBlack = {ctor: 'LBBlack'};
3616var _elm_lang$core$Dict$LBlack = {ctor: 'LBlack'};
3617var _elm_lang$core$Dict$RBEmpty_elm_builtin = function (a) {
3618	return {ctor: 'RBEmpty_elm_builtin', _0: a};
3619};
3620var _elm_lang$core$Dict$empty = _elm_lang$core$Dict$RBEmpty_elm_builtin(_elm_lang$core$Dict$LBlack);
3621var _elm_lang$core$Dict$isEmpty = function (dict) {
3622	return _elm_lang$core$Native_Utils.eq(dict, _elm_lang$core$Dict$empty);
3623};
3624var _elm_lang$core$Dict$RBNode_elm_builtin = F5(
3625	function (a, b, c, d, e) {
3626		return {ctor: 'RBNode_elm_builtin', _0: a, _1: b, _2: c, _3: d, _4: e};
3627	});
3628var _elm_lang$core$Dict$ensureBlackRoot = function (dict) {
3629	var _p23 = dict;
3630	if ((_p23.ctor === 'RBNode_elm_builtin') && (_p23._0.ctor === 'Red')) {
3631		return A5(_elm_lang$core$Dict$RBNode_elm_builtin, _elm_lang$core$Dict$Black, _p23._1, _p23._2, _p23._3, _p23._4);
3632	} else {
3633		return dict;
3634	}
3635};
3636var _elm_lang$core$Dict$lessBlackTree = function (dict) {
3637	var _p24 = dict;
3638	if (_p24.ctor === 'RBNode_elm_builtin') {
3639		return A5(
3640			_elm_lang$core$Dict$RBNode_elm_builtin,
3641			_elm_lang$core$Dict$lessBlack(_p24._0),
3642			_p24._1,
3643			_p24._2,
3644			_p24._3,
3645			_p24._4);
3646	} else {
3647		return _elm_lang$core$Dict$RBEmpty_elm_builtin(_elm_lang$core$Dict$LBlack);
3648	}
3649};
3650var _elm_lang$core$Dict$balancedTree = function (col) {
3651	return function (xk) {
3652		return function (xv) {
3653			return function (yk) {
3654				return function (yv) {
3655					return function (zk) {
3656						return function (zv) {
3657							return function (a) {
3658								return function (b) {
3659									return function (c) {
3660										return function (d) {
3661											return A5(
3662												_elm_lang$core$Dict$RBNode_elm_builtin,
3663												_elm_lang$core$Dict$lessBlack(col),
3664												yk,
3665												yv,
3666												A5(_elm_lang$core$Dict$RBNode_elm_builtin, _elm_lang$core$Dict$Black, xk, xv, a, b),
3667												A5(_elm_lang$core$Dict$RBNode_elm_builtin, _elm_lang$core$Dict$Black, zk, zv, c, d));
3668										};
3669									};
3670								};
3671							};
3672						};
3673					};
3674				};
3675			};
3676		};
3677	};
3678};
3679var _elm_lang$core$Dict$blacken = function (t) {
3680	var _p25 = t;
3681	if (_p25.ctor === 'RBEmpty_elm_builtin') {
3682		return _elm_lang$core$Dict$RBEmpty_elm_builtin(_elm_lang$core$Dict$LBlack);
3683	} else {
3684		return A5(_elm_lang$core$Dict$RBNode_elm_builtin, _elm_lang$core$Dict$Black, _p25._1, _p25._2, _p25._3, _p25._4);
3685	}
3686};
3687var _elm_lang$core$Dict$redden = function (t) {
3688	var _p26 = t;
3689	if (_p26.ctor === 'RBEmpty_elm_builtin') {
3690		return _elm_lang$core$Native_Debug.crash('can\'t make a Leaf red');
3691	} else {
3692		return A5(_elm_lang$core$Dict$RBNode_elm_builtin, _elm_lang$core$Dict$Red, _p26._1, _p26._2, _p26._3, _p26._4);
3693	}
3694};
3695var _elm_lang$core$Dict$balanceHelp = function (tree) {
3696	var _p27 = tree;
3697	_v36_6:
3698	do {
3699		_v36_5:
3700		do {
3701			_v36_4:
3702			do {
3703				_v36_3:
3704				do {
3705					_v36_2:
3706					do {
3707						_v36_1:
3708						do {
3709							_v36_0:
3710							do {
3711								if (_p27.ctor === 'RBNode_elm_builtin') {
3712									if (_p27._3.ctor === 'RBNode_elm_builtin') {
3713										if (_p27._4.ctor === 'RBNode_elm_builtin') {
3714											switch (_p27._3._0.ctor) {
3715												case 'Red':
3716													switch (_p27._4._0.ctor) {
3717														case 'Red':
3718															if ((_p27._3._3.ctor === 'RBNode_elm_builtin') && (_p27._3._3._0.ctor === 'Red')) {
3719																break _v36_0;
3720															} else {
3721																if ((_p27._3._4.ctor === 'RBNode_elm_builtin') && (_p27._3._4._0.ctor === 'Red')) {
3722																	break _v36_1;
3723																} else {
3724																	if ((_p27._4._3.ctor === 'RBNode_elm_builtin') && (_p27._4._3._0.ctor === 'Red')) {
3725																		break _v36_2;
3726																	} else {
3727																		if ((_p27._4._4.ctor === 'RBNode_elm_builtin') && (_p27._4._4._0.ctor === 'Red')) {
3728																			break _v36_3;
3729																		} else {
3730																			break _v36_6;
3731																		}
3732																	}
3733																}
3734															}
3735														case 'NBlack':
3736															if ((_p27._3._3.ctor === 'RBNode_elm_builtin') && (_p27._3._3._0.ctor === 'Red')) {
3737																break _v36_0;
3738															} else {
3739																if ((_p27._3._4.ctor === 'RBNode_elm_builtin') && (_p27._3._4._0.ctor === 'Red')) {
3740																	break _v36_1;
3741																} else {
3742																	if (((((_p27._0.ctor === 'BBlack') && (_p27._4._3.ctor === 'RBNode_elm_builtin')) && (_p27._4._3._0.ctor === 'Black')) && (_p27._4._4.ctor === 'RBNode_elm_builtin')) && (_p27._4._4._0.ctor === 'Black')) {
3743																		break _v36_4;
3744																	} else {
3745																		break _v36_6;
3746																	}
3747																}
3748															}
3749														default:
3750															if ((_p27._3._3.ctor === 'RBNode_elm_builtin') && (_p27._3._3._0.ctor === 'Red')) {
3751																break _v36_0;
3752															} else {
3753																if ((_p27._3._4.ctor === 'RBNode_elm_builtin') && (_p27._3._4._0.ctor === 'Red')) {
3754																	break _v36_1;
3755																} else {
3756																	break _v36_6;
3757																}
3758															}
3759													}
3760												case 'NBlack':
3761													switch (_p27._4._0.ctor) {
3762														case 'Red':
3763															if ((_p27._4._3.ctor === 'RBNode_elm_builtin') && (_p27._4._3._0.ctor === 'Red')) {
3764																break _v36_2;
3765															} else {
3766																if ((_p27._4._4.ctor === 'RBNode_elm_builtin') && (_p27._4._4._0.ctor === 'Red')) {
3767																	break _v36_3;
3768																} else {
3769																	if (((((_p27._0.ctor === 'BBlack') && (_p27._3._3.ctor === 'RBNode_elm_builtin')) && (_p27._3._3._0.ctor === 'Black')) && (_p27._3._4.ctor === 'RBNode_elm_builtin')) && (_p27._3._4._0.ctor === 'Black')) {
3770																		break _v36_5;
3771																	} else {
3772																		break _v36_6;
3773																	}
3774																}
3775															}
3776														case 'NBlack':
3777															if (_p27._0.ctor === 'BBlack') {
3778																if ((((_p27._4._3.ctor === 'RBNode_elm_builtin') && (_p27._4._3._0.ctor === 'Black')) && (_p27._4._4.ctor === 'RBNode_elm_builtin')) && (_p27._4._4._0.ctor === 'Black')) {
3779																	break _v36_4;
3780																} else {
3781																	if ((((_p27._3._3.ctor === 'RBNode_elm_builtin') && (_p27._3._3._0.ctor === 'Black')) && (_p27._3._4.ctor === 'RBNode_elm_builtin')) && (_p27._3._4._0.ctor === 'Black')) {
3782																		break _v36_5;
3783																	} else {
3784																		break _v36_6;
3785																	}
3786																}
3787															} else {
3788																break _v36_6;
3789															}
3790														default:
3791															if (((((_p27._0.ctor === 'BBlack') && (_p27._3._3.ctor === 'RBNode_elm_builtin')) && (_p27._3._3._0.ctor === 'Black')) && (_p27._3._4.ctor === 'RBNode_elm_builtin')) && (_p27._3._4._0.ctor === 'Black')) {
3792																break _v36_5;
3793															} else {
3794																break _v36_6;
3795															}
3796													}
3797												default:
3798													switch (_p27._4._0.ctor) {
3799														case 'Red':
3800															if ((_p27._4._3.ctor === 'RBNode_elm_builtin') && (_p27._4._3._0.ctor === 'Red')) {
3801																break _v36_2;
3802															} else {
3803																if ((_p27._4._4.ctor === 'RBNode_elm_builtin') && (_p27._4._4._0.ctor === 'Red')) {
3804																	break _v36_3;
3805																} else {
3806																	break _v36_6;
3807																}
3808															}
3809														case 'NBlack':
3810															if (((((_p27._0.ctor === 'BBlack') && (_p27._4._3.ctor === 'RBNode_elm_builtin')) && (_p27._4._3._0.ctor === 'Black')) && (_p27._4._4.ctor === 'RBNode_elm_builtin')) && (_p27._4._4._0.ctor === 'Black')) {
3811																break _v36_4;
3812															} else {
3813																break _v36_6;
3814															}
3815														default:
3816															break _v36_6;
3817													}
3818											}
3819										} else {
3820											switch (_p27._3._0.ctor) {
3821												case 'Red':
3822													if ((_p27._3._3.ctor === 'RBNode_elm_builtin') && (_p27._3._3._0.ctor === 'Red')) {
3823														break _v36_0;
3824													} else {
3825														if ((_p27._3._4.ctor === 'RBNode_elm_builtin') && (_p27._3._4._0.ctor === 'Red')) {
3826															break _v36_1;
3827														} else {
3828															break _v36_6;
3829														}
3830													}
3831												case 'NBlack':
3832													if (((((_p27._0.ctor === 'BBlack') && (_p27._3._3.ctor === 'RBNode_elm_builtin')) && (_p27._3._3._0.ctor === 'Black')) && (_p27._3._4.ctor === 'RBNode_elm_builtin')) && (_p27._3._4._0.ctor === 'Black')) {
3833														break _v36_5;
3834													} else {
3835														break _v36_6;
3836													}
3837												default:
3838													break _v36_6;
3839											}
3840										}
3841									} else {
3842										if (_p27._4.ctor === 'RBNode_elm_builtin') {
3843											switch (_p27._4._0.ctor) {
3844												case 'Red':
3845													if ((_p27._4._3.ctor === 'RBNode_elm_builtin') && (_p27._4._3._0.ctor === 'Red')) {
3846														break _v36_2;
3847													} else {
3848														if ((_p27._4._4.ctor === 'RBNode_elm_builtin') && (_p27._4._4._0.ctor === 'Red')) {
3849															break _v36_3;
3850														} else {
3851															break _v36_6;
3852														}
3853													}
3854												case 'NBlack':
3855													if (((((_p27._0.ctor === 'BBlack') && (_p27._4._3.ctor === 'RBNode_elm_builtin')) && (_p27._4._3._0.ctor === 'Black')) && (_p27._4._4.ctor === 'RBNode_elm_builtin')) && (_p27._4._4._0.ctor === 'Black')) {
3856														break _v36_4;
3857													} else {
3858														break _v36_6;
3859													}
3860												default:
3861													break _v36_6;
3862											}
3863										} else {
3864											break _v36_6;
3865										}
3866									}
3867								} else {
3868									break _v36_6;
3869								}
3870							} while(false);
3871							return _elm_lang$core$Dict$balancedTree(_p27._0)(_p27._3._3._1)(_p27._3._3._2)(_p27._3._1)(_p27._3._2)(_p27._1)(_p27._2)(_p27._3._3._3)(_p27._3._3._4)(_p27._3._4)(_p27._4);
3872						} while(false);
3873						return _elm_lang$core$Dict$balancedTree(_p27._0)(_p27._3._1)(_p27._3._2)(_p27._3._4._1)(_p27._3._4._2)(_p27._1)(_p27._2)(_p27._3._3)(_p27._3._4._3)(_p27._3._4._4)(_p27._4);
3874					} while(false);
3875					return _elm_lang$core$Dict$balancedTree(_p27._0)(_p27._1)(_p27._2)(_p27._4._3._1)(_p27._4._3._2)(_p27._4._1)(_p27._4._2)(_p27._3)(_p27._4._3._3)(_p27._4._3._4)(_p27._4._4);
3876				} while(false);
3877				return _elm_lang$core$Dict$balancedTree(_p27._0)(_p27._1)(_p27._2)(_p27._4._1)(_p27._4._2)(_p27._4._4._1)(_p27._4._4._2)(_p27._3)(_p27._4._3)(_p27._4._4._3)(_p27._4._4._4);
3878			} while(false);
3879			return A5(
3880				_elm_lang$core$Dict$RBNode_elm_builtin,
3881				_elm_lang$core$Dict$Black,
3882				_p27._4._3._1,
3883				_p27._4._3._2,
3884				A5(_elm_lang$core$Dict$RBNode_elm_builtin, _elm_lang$core$Dict$Black, _p27._1, _p27._2, _p27._3, _p27._4._3._3),
3885				A5(
3886					_elm_lang$core$Dict$balance,
3887					_elm_lang$core$Dict$Black,
3888					_p27._4._1,
3889					_p27._4._2,
3890					_p27._4._3._4,
3891					_elm_lang$core$Dict$redden(_p27._4._4)));
3892		} while(false);
3893		return A5(
3894			_elm_lang$core$Dict$RBNode_elm_builtin,
3895			_elm_lang$core$Dict$Black,
3896			_p27._3._4._1,
3897			_p27._3._4._2,
3898			A5(
3899				_elm_lang$core$Dict$balance,
3900				_elm_lang$core$Dict$Black,
3901				_p27._3._1,
3902				_p27._3._2,
3903				_elm_lang$core$Dict$redden(_p27._3._3),
3904				_p27._3._4._3),
3905			A5(_elm_lang$core$Dict$RBNode_elm_builtin, _elm_lang$core$Dict$Black, _p27._1, _p27._2, _p27._3._4._4, _p27._4));
3906	} while(false);
3907	return tree;
3908};
3909var _elm_lang$core$Dict$balance = F5(
3910	function (c, k, v, l, r) {
3911		var tree = A5(_elm_lang$core$Dict$RBNode_elm_builtin, c, k, v, l, r);
3912		return _elm_lang$core$Dict$blackish(tree) ? _elm_lang$core$Dict$balanceHelp(tree) : tree;
3913	});
3914var _elm_lang$core$Dict$bubble = F5(
3915	function (c, k, v, l, r) {
3916		return (_elm_lang$core$Dict$isBBlack(l) || _elm_lang$core$Dict$isBBlack(r)) ? A5(
3917			_elm_lang$core$Dict$balance,
3918			_elm_lang$core$Dict$moreBlack(c),
3919			k,
3920			v,
3921			_elm_lang$core$Dict$lessBlackTree(l),
3922			_elm_lang$core$Dict$lessBlackTree(r)) : A5(_elm_lang$core$Dict$RBNode_elm_builtin, c, k, v, l, r);
3923	});
3924var _elm_lang$core$Dict$removeMax = F5(
3925	function (c, k, v, l, r) {
3926		var _p28 = r;
3927		if (_p28.ctor === 'RBEmpty_elm_builtin') {
3928			return A3(_elm_lang$core$Dict$rem, c, l, r);
3929		} else {
3930			return A5(
3931				_elm_lang$core$Dict$bubble,
3932				c,
3933				k,
3934				v,
3935				l,
3936				A5(_elm_lang$core$Dict$removeMax, _p28._0, _p28._1, _p28._2, _p28._3, _p28._4));
3937		}
3938	});
3939var _elm_lang$core$Dict$rem = F3(
3940	function (color, left, right) {
3941		var _p29 = {ctor: '_Tuple2', _0: left, _1: right};
3942		if (_p29._0.ctor === 'RBEmpty_elm_builtin') {
3943			if (_p29._1.ctor === 'RBEmpty_elm_builtin') {
3944				var _p30 = color;
3945				switch (_p30.ctor) {
3946					case 'Red':
3947						return _elm_lang$core$Dict$RBEmpty_elm_builtin(_elm_lang$core$Dict$LBlack);
3948					case 'Black':
3949						return _elm_lang$core$Dict$RBEmpty_elm_builtin(_elm_lang$core$Dict$LBBlack);
3950					default:
3951						return _elm_lang$core$Native_Debug.crash('cannot have bblack or nblack nodes at this point');
3952				}
3953			} else {
3954				var _p33 = _p29._1._0;
3955				var _p32 = _p29._0._0;
3956				var _p31 = {ctor: '_Tuple3', _0: color, _1: _p32, _2: _p33};
3957				if ((((_p31.ctor === '_Tuple3') && (_p31._0.ctor === 'Black')) && (_p31._1.ctor === 'LBlack')) && (_p31._2.ctor === 'Red')) {
3958					return A5(_elm_lang$core$Dict$RBNode_elm_builtin, _elm_lang$core$Dict$Black, _p29._1._1, _p29._1._2, _p29._1._3, _p29._1._4);
3959				} else {
3960					return A4(
3961						_elm_lang$core$Dict$reportRemBug,
3962						'Black/LBlack/Red',
3963						color,
3964						_elm_lang$core$Basics$toString(_p32),
3965						_elm_lang$core$Basics$toString(_p33));
3966				}
3967			}
3968		} else {
3969			if (_p29._1.ctor === 'RBEmpty_elm_bu
3969iltin') {
3970				var _p36 = _p29._1._0;
3971				var _p35 = _p29._0._0;
3972				var _p34 = {ctor: '_Tuple3', _0: color, _1: _p35, _2: _p36};
3973				if ((((_p34.ctor === '_Tuple3') && (_p34._0.ctor === 'Black')) && (_p34._1.ctor === 'Red')) && (_p34._2.ctor === 'LBlack')) {
3974					return A5(_elm_lang$core$Dict$RBNode_elm_builtin, _elm_lang$core$Dict$Black, _p29._0._1, _p29._0._2, _p29._0._3, _p29._0._4);
3975				} else {
3976					return A4(
3977						_elm_lang$core$Dict$reportRemBug,
3978						'Black/Red/LBlack',
3979						color,
3980						_elm_lang$core$Basics$toString(_p35),
3981						_elm_lang$core$Basics$toString(_p36));
3982				}
3983			} else {
3984				var _p40 = _p29._0._2;
3985				var _p39 = _p29._0._4;
3986				var _p38 = _p29._0._1;
3987				var newLeft = A5(_elm_lang$core$Dict$removeMax, _p29._0._0, _p38, _p40, _p29._0._3, _p39);
3988				var _p37 = A3(_elm_lang$core$Dict$maxWithDefault, _p38, _p40, _p39);
3989				var k = _p37._0;
3990				var v = _p37._1;
3991				return A5(_elm_lang$core$Dict$bubble, color, k, v, newLeft, right);
3992			}
3993		}
3994	});
3995var _elm_lang$core$Dict$map = F2(
3996	function (f, dict) {
3997		var _p41 = dict;
3998		if (_p41.ctor === 'RBEmpty_elm_builtin') {
3999			return _elm_lang$core$Dict$RBEmpty_elm_builtin(_elm_lang$core$Dict$LBlack);
4000		} else {
4001			var _p42 = _p41._1;
4002			return A5(
4003				_elm_lang$core$Dict$RBNode_elm_builtin,
4004				_p41._0,
4005				_p42,
4006				A2(f, _p42, _p41._2),
4007				A2(_elm_lang$core$Dict$map, f, _p41._3),
4008				A2(_elm_lang$core$Dict$map, f, _p41._4));
4009		}
4010	});
4011var _elm_lang$core$Dict$Same = {ctor: 'Same'};
4012var _elm_lang$core$Dict$Remove = {ctor: 'Remove'};
4013var _elm_lang$core$Dict$Insert = {ctor: 'Insert'};
4014var _elm_lang$core$Dict$update = F3(
4015	function (k, alter, dict) {
4016		var up = function (dict) {
4017			var _p43 = dict;
4018			if (_p43.ctor === 'RBEmpty_elm_builtin') {
4019				var _p44 = alter(_elm_lang$core$Maybe$Nothing);
4020				if (_p44.ctor === 'Nothing') {
4021					return {ctor: '_Tuple2', _0: _elm_lang$core$Dict$Same, _1: _elm_lang$core$Dict$empty};
4022				} else {
4023					return {
4024						ctor: '_Tuple2',
4025						_0: _elm_lang$core$Dict$Insert,
4026						_1: A5(_elm_lang$core$Dict$RBNode_elm_builtin, _elm_lang$core$Dict$Red, k, _p44._0, _elm_lang$core$Dict$empty, _elm_lang$core$Dict$empty)
4027					};
4028				}
4029			} else {
4030				var _p55 = _p43._2;
4031				var _p54 = _p43._4;
4032				var _p53 = _p43._3;
4033				var _p52 = _p43._1;
4034				var _p51 = _p43._0;
4035				var _p45 = A2(_elm_lang$core$Basics$compare, k, _p52);
4036				switch (_p45.ctor) {
4037					case 'EQ':
4038						var _p46 = alter(
4039							_elm_lang$core$Maybe$Just(_p55));
4040						if (_p46.ctor === 'Nothing') {
4041							return {
4042								ctor: '_Tuple2',
4043								_0: _elm_lang$core$Dict$Remove,
4044								_1: A3(_elm_lang$core$Dict$rem, _p51, _p53, _p54)
4045							};
4046						} else {
4047							return {
4048								ctor: '_Tuple2',
4049								_0: _elm_lang$core$Dict$Same,
4050								_1: A5(_elm_lang$core$Dict$RBNode_elm_builtin, _p51, _p52, _p46._0, _p53, _p54)
4051							};
4052						}
4053					case 'LT':
4054						var _p47 = up(_p53);
4055						var flag = _p47._0;
4056						var newLeft = _p47._1;
4057						var _p48 = flag;
4058						switch (_p48.ctor) {
4059							case 'Same':
4060								return {
4061									ctor: '_Tuple2',
4062									_0: _elm_lang$core$Dict$Same,
4063									_1: A5(_elm_lang$core$Dict$RBNode_elm_builtin, _p51, _p52, _p55, newLeft, _p54)
4064								};
4065							case 'Insert':
4066								return {
4067									ctor: '_Tuple2',
4068									_0: _elm_lang$core$Dict$Insert,
4069									_1: A5(_elm_lang$core$Dict$balance, _p51, _p52, _p55, newLeft, _p54)
4070								};
4071							default:
4072								return {
4073									ctor: '_Tuple2',
4074									_0: _elm_lang$core$Dict$Remove,
4075									_1: A5(_elm_lang$core$Dict$bubble, _p51, _p52, _p55, newLeft, _p54)
4076								};
4077						}
4078					default:
4079						var _p49 = up(_p54);
4080						var flag = _p49._0;
4081						var newRight = _p49._1;
4082						var _p50 = flag;
4083						switch (_p50.ctor) {
4084							case 'Same':
4085								return {
4086									ctor: '_Tuple2',
4087									_0: _elm_lang$core$Dict$Same,
4088									_1: A5(_elm_lang$core$Dict$RBNode_elm_builtin, _p51, _p52, _p55, _p53, newRight)
4089								};
4090							case 'Insert':
4091								return {
4092									ctor: '_Tuple2',
4093									_0: _elm_lang$core$Dict$Insert,
4094									_1: A5(_elm_lang$core$Dict$balance, _p51, _p52, _p55, _p53, newRight)
4095								};
4096							default:
4097								return {
4098									ctor: '_Tuple2',
4099									_0: _elm_lang$core$Dict$Remove,
4100									_1: A5(_elm_lang$core$Dict$bubble, _p51, _p52, _p55, _p53, newRight)
4101								};
4102						}
4103				}
4104			}
4105		};
4106		var _p56 = up(dict);
4107		var flag = _p56._0;
4108		var updatedDict = _p56._1;
4109		var _p57 = flag;
4110		switch (_p57.ctor) {
4111			case 'Same':
4112				return updatedDict;
4113			case 'Insert':
4114				return _elm_lang$core$Dict$ensureBlackRoot(updatedDict);
4115			default:
4116				return _elm_lang$core$Dict$blacken(updatedDict);
4117		}
4118	});
4119var _elm_lang$core$Dict$insert = F3(
4120	function (key, value, dict) {
4121		return A3(
4122			_elm_lang$core$Dict$update,
4123			key,
4124			_elm_lang$core$Basics$always(
4125				_elm_lang$core$Maybe$Just(value)),
4126			dict);
4127	});
4128var _elm_lang$core$Dict$singleton = F2(
4129	function (key, value) {
4130		return A3(_elm_lang$core$Dict$insert, key, value, _elm_lang$core$Dict$empty);
4131	});
4132var _elm_lang$core$Dict$union = F2(
4133	function (t1, t2) {
4134		return A3(_elm_lang$core$Dict$foldl, _elm_lang$core$Dict$insert, t2, t1);
4135	});
4136var _elm_lang$core$Dict$filter = F2(
4137	function (predicate, dictionary) {
4138		var add = F3(
4139			function (key, value, dict) {
4140				return A2(predicate, key, value) ? A3(_elm_lang$core$Dict$insert, key, value, dict) : dict;
4141			});
4142		return A3(_elm_lang$core$Dict$foldl, add, _elm_lang$core$Dict$empty, dictionary);
4143	});
4144var _elm_lang$core$Dict$intersect = F2(
4145	function (t1, t2) {
4146		return A2(
4147			_elm_lang$core$Dict$filter,
4148			F2(
4149				function (k, _p58) {
4150					return A2(_elm_lang$core$Dict$member, k, t2);
4151				}),
4152			t1);
4153	});
4154var _elm_lang$core$Dict$partition = F2(
4155	function (predicate, dict) {
4156		var add = F3(
4157			function (key, value, _p59) {
4158				var _p60 = _p59;
4159				var _p62 = _p60._1;
4160				var _p61 = _p60._0;
4161				return A2(predicate, key, value) ? {
4162					ctor: '_Tuple2',
4163					_0: A3(_elm_lang$core$Dict$insert, key, value, _p61),
4164					_1: _p62
4165				} : {
4166					ctor: '_Tuple2',
4167					_0: _p61,
4168					_1: A3(_elm_lang$core$Dict$insert, key, value, _p62)
4169				};
4170			});
4171		return A3(
4172			_elm_lang$core$Dict$foldl,
4173			add,
4174			{ctor: '_Tuple2', _0: _elm_lang$core$Dict$empty, _1: _elm_lang$core$Dict$empty},
4175			dict);
4176	});
4177var _elm_lang$core$Dict$fromList = function (assocs) {
4178	return A3(
4179		_elm_lang$core$List$foldl,
4180		F2(
4181			function (_p63, dict) {
4182				var _p64 = _p63;
4183				return A3(_elm_lang$core$Dict$insert, _p64._0, _p64._1, dict);
4184			}),
4185		_elm_lang$core$Dict$empty,
4186		assocs);
4187};
4188var _elm_lang$core$Dict$remove = F2(
4189	function (key, dict) {
4190		return A3(
4191			_elm_lang$core$Dict$update,
4192			key,
4193			_elm_lang$core$Basics$always(_elm_lang$core$Maybe$Nothing),
4194			dict);
4195	});
4196var _elm_lang$core$Dict$diff = F2(
4197	function (t1, t2) {
4198		return A3(
4199			_elm_lang$core$Dict$foldl,
4200			F3(
4201				function (k, v, t) {
4202					return A2(_elm_lang$core$Dict$remove, k, t);
4203				}),
4204			t1,
4205			t2);
4206	});
4207
4208//import Maybe, Native.Array, Native.List, Native.Utils, Result //
4209
4210var _elm_lang$core$Native_Json = function() {
4211
4212
4213// CORE DECODERS
4214
4215function succeed(msg)
4216{
4217	return {
4218		ctor: '<decoder>',
4219		tag: 'succeed',
4220		msg: msg
4221	};
4222}
4223
4224function fail(msg)
4225{
4226	return {
4227		ctor: '<decoder>',
4228		tag: 'fail',
4229		msg: msg
4230	};
4231}
4232
4233function decodePrimitive(tag)
4234{
4235	return {
4236		ctor: '<decoder>',
4237		tag: tag
4238	};
4239}
4240
4241function decodeContainer(tag, decoder)
4242{
4243	return {
4244		ctor: '<decoder>',
4245		tag: tag,
4246		decoder: decoder
4247	};
4248}
4249
4250function decodeNull(value)
4251{
4252	return {
4253		ctor: '<decoder>',
4254		tag: 'null',
4255		value: value
4256	};
4257}
4258
4259function decodeField(field, decoder)
4260{
4261	return {
4262		ctor: '<decoder>',
4263		tag: 'field',
4264		field: field,
4265		decoder: decoder
4266	};
4267}
4268
4269function decodeIndex(index, decoder)
4270{
4271	return {
4272		ctor: '<decoder>',
4273		tag: 'index',
4274		index: index,
4275		decoder: decoder
4276	};
4277}
4278
4279function decodeKeyValuePairs(decoder)
4280{
4281	return {
4282		ctor: '<decoder>',
4283		tag: 'key-value',
4284		decoder: decoder
4285	};
4286}
4287
4288function mapMany(f, decoders)
4289{
4290	return {
4291		ctor: '<decoder>',
4292		tag: 'map-many',
4293		func: f,
4294		decoders: decoders
4295	};
4296}
4297
4298function andThen(callback, decoder)
4299{
4300	return {
4301		ctor: '<decoder>',
4302		tag: 'andThen',
4303		decoder: decoder,
4304		callback: callback
4305	};
4306}
4307
4308function oneOf(decoders)
4309{
4310	return {
4311		ctor: '<decoder>',
4312		tag: 'oneOf',
4313		decoders: decoders
4314	};
4315}
4316
4317
4318// DECODING OBJECTS
4319
4320function map1(f, d1)
4321{
4322	return mapMany(f, [d1]);
4323}
4324
4325function map2(f, d1, d2)
4326{
4327	return mapMany(f, [d1, d2]);
4328}
4329
4330function map3(f, d1, d2, d3)
4331{
4332	return mapMany(f, [d1, d2, d3]);
4333}
4334
4335function map4(f, d1, d2, d3, d4)
4336{
4337	return mapMany(f, [d1, d2, d3, d4]);
4338}
4339
4340function map5(f, d1, d2, d3, d4, d5)
4341{
4342	return mapMany(f, [d1, d2, d3, d4, d5]);
4343}
4344
4345function map6(f, d1, d2, d3, d4, d5, d6)
4346{
4347	return mapMany(f, [d1, d2, d3, d4, d5, d6]);
4348}
4349
4350function map7(f, d1, d2, d3, d4, d5, d6, d7)
4351{
4352	return mapMany(f, [d1, d2, d3, d4, d5, d6, d7]);
4353}
4354
4355function map8(f, d1, d2, d3, d4, d5, d6, d7, d8)
4356{
4357	return mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]);
4358}
4359
4360
4361// DECODE HELPERS
4362
4363function ok(value)
4364{
4365	return { tag: 'ok', value: value };
4366}
4367
4368function badPrimitive(type, value)
4369{
4370	return { tag: 'primitive', type: type, value: value };
4371}
4372
4373function badIndex(index, nestedProblems)
4374{
4375	return { tag: 'index', index: index, rest: nestedProblems };
4376}
4377
4378function badField(field, nestedProblems)
4379{
4380	return { tag: 'field', field: field, rest: nestedProblems };
4381}
4382
4383function badIndex(index, nestedProblems)
4384{
4385	return { tag: 'index', index: index, rest: nestedProblems };
4386}
4387
4388function badOneOf(problems)
4389{
4390	return { tag: 'oneOf', problems: problems };
4391}
4392
4393function bad(msg)
4394{
4395	return { tag: 'fail', msg: msg };
4396}
4397
4398function badToString(problem)
4399{
4400	var context = '_';
4401	while (problem)
4402	{
4403		switch (problem.tag)
4404		{
4405			case 'primitive':
4406				return 'Expecting ' + problem.type
4407					+ (context === '_' ? '' : ' at ' + context)
4408					+ ' but instead got: ' + jsToString(problem.value);
4409
4410			case 'index':
4411				context += '[' + problem.index + ']';
4412				problem = problem.rest;
4413				break;
4414
4415			case 'field':
4416				context += '.' + problem.field;
4417				problem = problem.rest;
4418				break;
4419
4420			case 'oneOf':
4421				var problems = problem.problems;
4422				for (var i = 0; i < problems.length; i++)
4423				{
4424					problems[i] = badToString(problems[i]);
4425				}
4426				return 'I ran into the following problems'
4427					+ (context === '_' ? '' : ' at ' + context)
4428					+ ':\n\n' + problems.join('\n');
4429
4430			case 'fail':
4431				return 'I ran into a `fail` decoder'
4432					+ (context === '_' ? '' : ' at ' + context)
4433					+ ': ' + problem.msg;
4434		}
4435	}
4436}
4437
4438function jsToString(value)
4439{
4440	return value === undefined
4441		? 'undefined'
4442		: JSON.stringify(value);
4443}
4444
4445
4446// DECODE
4447
4448function runOnString(decoder, string)
4449{
4450	var json;
4451	try
4452	{
4453		json = JSON.parse(string);
4454	}
4455	catch (e)
4456	{
4457		return _elm_lang$core$Result$Err('Given an invalid JSON: ' + e.message);
4458	}
4459	return run(decoder, json);
4460}
4461
4462function run(decoder, value)
4463{
4464	var result = runHelp(decoder, value);
4465	return (result.tag === 'ok')
4466		? _elm_lang$core$Result$Ok(result.value)
4467		: _elm_lang$core$Result$Err(badToString(result));
4468}
4469
4470function runHelp(decoder, value)
4471{
4472	switch (decoder.tag)
4473	{
4474		case 'bool':
4475			return (typeof value === 'boolean')
4476				? ok(value)
4477				: badPrimitive('a Bool', value);
4478
4479		case 'int':
4480			if (typeof value !== 'number') {
4481				return badPrimitive('an Int', value);
4482			}
4483
4484			if (-2147483647 < value && value < 2147483647 && (value | 0) === value) {
4485				return ok(value);
4486			}
4487
4488			if (isFinite(value) && !(value % 1)) {
4489				return ok(value);
4490			}
4491
4492			return badPrimitive('an Int', value);
4493
4494		case 'float':
4495			return (typeof value === 'number')
4496				? ok(value)
4497				: badPrimitive('a Float', value);
4498
4499		case 'string':
4500			return (typeof value === 'string')
4501				? ok(value)
4502				: (value instanceof String)
4503					? ok(value + '')
4504					: badPrimitive('a String', value);
4505
4506		case 'null':
4507			return (value === null)
4508				? ok(decoder.value)
4509				: badPrimitive('null', value);
4510
4511		case 'value':
4512			return ok(value);
4513
4514		case 'list':
4515			if (!(value instanceof Array))
4516			{
4517				return badPrimitive('a List', value);
4518			}
4519
4520			var list = _elm_lang$core$Native_List.Nil;
4521			for (var i = value.length; i--; )
4522			{
4523				var result = runHelp(decoder.decoder, value[i]);
4524				if (result.tag !== 'ok')
4525				{
4526					return badIndex(i, result)
4527				}
4528				list = _elm_lang$core$Native_List.Cons(result.value, list);
4529			}
4530			return ok(list);
4531
4532		case 'array':
4533			if (!(value instanceof Array))
4534			{
4535				return badPrimitive('an Array', value);
4536			}
4537
4538			var len = value.length;
4539			var array = new Array(len);
4540			for (var i = len; i--; )
4541			{
4542				var result = runHelp(decoder.decoder, value[i]);
4543				if (result.tag !== 'ok')
4544				{
4545					return badIndex(i, result);
4546				}
4547				array[i] = result.value;
4548			}
4549			return ok(_elm_lang$core$Native_Array.fromJSArray(array));
4550
4551		case 'maybe':
4552			var result = runHelp(decoder.decoder, value);
4553			return (result.tag === 'ok')
4554				? ok(_elm_lang$core$Maybe$Just(result.value))
4555				: ok(_elm_lang$core$Maybe$Nothing);
4556
4557		case 'field':
4558			var field = decoder.field;
4559			if (typeof value !== 'object' || value === null || !(field in value))
4560			{
4561				return badPrimitive('an object with a field named `' + field + '`', value);
4562			}
4563
4564			var result = runHelp(decoder.decoder, value[field]);
4565			return (result.tag === 'ok') ? result : badField(field, result);
4566
4567		case 'index':
4568			var index = decoder.index;
4569			if (!(value instanceof Array))
4570			{
4571				return badPrimitive('an array', value);
4572			}
4573			if (index >= value.length)
4574			{
4575				return badPrimitive('a longer array. Need index ' + index + ' but there are only ' + value.length + ' entries', value);
4576			}
4577
4578			var result = runHelp(decoder.decoder, value[index]);
4579			return (result.tag === 'ok') ? result : badIndex(index, result);
4580
4581		case 'key-value':
4582			if (typeof value !== 'object' || value === null || value instanceof Array)
4583			{
4584				return badPrimitive('an object', value);
4585			}
4586
4587			var keyValuePairs = _elm_lang$core$Native_List.Nil;
4588			for (var key in value)
4589			{
4590				var result = runHelp(decoder.decoder, value[key]);
4591				if (result.tag !== 'ok')
4592				{
4593					return badField(key, result);
4594				}
4595				var pair = _elm_lang$core$Native_Utils.Tuple2(key, result.value);
4596				keyValuePairs = _elm_lang$core$Native_List.Cons(pair, keyValuePairs);
4597			}
4598			return ok(keyValuePairs);
4599
4600		case 'map-many':
4601			var answer = decoder.func;
4602			var decoders = decoder.decoders;
4603			for (var i = 0; i < decoders.length; i++)
4604			{
4605				var result = runHelp(decoders[i], value);
4606				if (result.tag !== 'ok')
4607				{
4608					return result;
4609				}
4610				answer = answer(result.value);
4611			}
4612			return ok(answer);
4613
4614		case 'andThen':
4615			var result = runHelp(decoder.decoder, value);
4616			return (result.tag !== 'ok')
4617				? result
4618				: runHelp(decoder.callback(result.value), value);
4619
4620		case 'oneOf':
4621			var errors = [];
4622			var temp = decoder.decoders;
4623			while (temp.ctor !== '[]')
4624			{
4625				var result = runHelp(temp._0, value);
4626
4627				if (result.tag === 'ok')
4628				{
4629					return result;
4630				}
4631
4632				errors.push(result);
4633
4634				temp = temp._1;
4635			}
4636			return badOneOf(errors);
4637
4638		case 'fail':
4639			return bad(decoder.msg);
4640
4641		case 'succeed':
4642			return ok(decoder.msg);
4643	}
4644}
4645
4646
4647// EQUALITY
4648
4649function equality(a, b)
4650{
4651	if (a === b)
4652	{
4653		return true;
4654	}
4655
4656	if (a.tag !== b.tag)
4657	{
4658		return false;
4659	}
4660
4661	switch (a.tag)
4662	{
4663		case 'succeed':
4664		case 'fail':
4665			return a.msg === b.msg;
4666
4667		case 'bool':
4668		case 'int':
4669		case 'float':
4670		case 'string':
4671		case 'value':
4672			return true;
4673
4674		case 'null':
4675			return a.value === b.value;
4676
4677		case 'list':
4678		case 'array':
4679		case 'maybe':
4680		case 'key-value':
4681			return equality(a.decoder, b.decoder);
4682
4683		case 'field':
4684			return a.field === b.field && equality(a.decoder, b.decoder);
4685
4686		case 'index':
4687			return a.index === b.index && equality(a.decoder, b.decoder);
4688
4689		case 'map-many':
4690			if (a.func !== b.func)
4691			{
4692				return false;
4693			}
4694			return listEquality(a.decoders, b.decoders);
4695
4696		case 'andThen':
4697			return a.callback === b.callback && equality(a.decoder, b.decoder);
4698
4699		case 'oneOf':
4700			return listEquality(a.decoders, b.decoders);
4701	}
4702}
4703
4704function listEquality(aDecoders, bDecoders)
4705{
4706	var len = aDecoders.length;
4707	if (len !== bDecoders.length)
4708	{
4709		return false;
4710	}
4711	for (var i = 0; i < len; i++)
4712	{
4713		if (!equality(aDecoders[i], bDecoders[i]))
4714		{
4715			return false;
4716		}
4717	}
4718	return true;
4719}
4720
4721
4722// ENCODE
4723
4724function encode(indentLevel, value)
4725{
4726	return JSON.stringify(value, null, indentLevel);
4727}
4728
4729function identity(value)
4730{
4731	return value;
4732}
4733
4734function encodeObject(keyValuePairs)
4735{
4736	var obj = {};
4737	while (keyValuePairs.ctor !== '[]')
4738	{
4739		var pair = keyValuePairs._0;
4740		obj[pair._0] = pair._1;
4741		keyValuePairs = keyValuePairs._1;
4742	}
4743	return obj;
4744}
4745
4746return {
4747	encode: F2(encode),
4748	runOnString: F2(runOnString),
4749	run: F2(run),
4750
4751	decodeNull: decodeNull,
4752	decodePrimitive: decodePrimitive,
4753	decodeContainer: F2(decodeContainer),
4754
4755	decodeField: F2(decodeField),
4756	decodeIndex: F2(decodeIndex),
4757
4758	map1: F2(map1),
4759	map2: F3(map2),
4760	map3: F4(map3),
4761	map4: F5(map4),
4762	map5: F6(map5),
4763	map6: F7(map6),
4764	map7: F8(map7),
4765	map8: F9(map8),
4766	decodeKeyValuePairs: decodeKeyValuePairs,
4767
4768	andThen: F2(andThen),
4769	fail: fail,
4770	succeed: succeed,
4771	oneOf: oneOf,
4772
4773	identity: identity,
4774	encodeNull: null,
4775	encodeArray: _elm_lang$core$Native_Array.toJSArray,
4776	encodeList: _elm_lang$core$Native_List.toArray,
4777	encodeObject: encodeObject,
4778
4779	equality: equality
4780};
4781
4782}();
4783
4784var _elm_lang$core$Json_Encode$list = _elm_lang$core$Native_Json.encodeList;
4785var _elm_lang$core$Json_Encode$array = _elm_lang$core$Native_Json.encodeArray;
4786var _elm_lang$core$Json_Encode$object = _elm_lang$core$Native_Json.encodeObject;
4787var _elm_lang$core$Json_Encode$null = _elm_lang$core$Native_Json.encodeNull;
4788var _elm_lang$core$Json_Encode$bool = _elm_lang$core$Native_Json.identity;
4789var _elm_lang$core$Json_Encode$float = _elm_lang$core$Native_Json.identity;
4790var _elm_lang$core$Json_Encode$int = _elm_lang$core$Native_Json.identity;
4791var _elm_lang$core$Json_Encode$string = _elm_lang$core$Native_Json.identity;
4792var _elm_lang$core$Json_Encode$encode = _elm_lang$core$Native_Json.encode;
4793var _elm_lang$core$Json_Encode$Value = {ctor: 'Value'};
4794
4795var _elm_lang$core$Json_Decode$null = _elm_lang$core$Native_Json.decodeNull;
4796var _elm_lang$core$Json_Decode$value = _elm_lang$core$Native_Json.decodePrimitive('value');
4797var _elm_lang$core$Json_Decode$andThen = _elm_lang$core$Native_Json.andThen;
4798var _elm_lang$core$Json_Decode$fail = _elm_lang$core$Native_Json.fail;
4799var _elm_lang$core$Json_Decode$succeed = _elm_lang$core$Native_Json.succeed;
4800var _elm_lang$core$Json_Decode$lazy = function (thunk) {
4801	return A2(
4802		_elm_lang$core$Json_Decode$andThen,
4803		thunk,
4804		_elm_lang$core$Json_Decode$succeed(
4805			{ctor: '_Tuple0'}));
4806};
4807var _elm_lang$core$Json_Decode$decodeValue = _elm_lang$core$Native_Json.run;
4808var _elm_lang$core$Json_Decode$decodeString = _elm_lang$core$Native_Json.runOnString;
4809var _elm_lang$core$Json_Decode$map8 = _elm_lang$core$Native_Json.map8;
4810var _elm_lang$core$Json_Decode$map7 = _elm_lang$core$Native_Json.map7;
4811var _elm_lang$core$Json_Decode$map6 = _elm_lang$core$Native_Json.map6;
4812var _elm_lang$core$Json_Decode$map5 = _elm_lang$core$Native_Json.map5;
4813var _elm_lang$core$Json_Decode$map4 = _elm_lang$core$Native_Json.map4;
4814var _elm_lang$core$Json_Decode$map3 = _elm_lang$core$Native_Json.map3;
4815var _elm_lang$core$Json_Decode$map2 = _elm_lang$core$Native_Json.map2;
4816var _elm_lang$core$Json_Decode$map = _elm_lang$core$Native_Json.map1;
4817var _elm_lang$core$Json_Decode$oneOf = _elm_lang$core$Native_Json.oneOf;
4818var _elm_lang$core$Json_Decode$maybe = function (decoder) {
4819	return A2(_elm_lang$core$Native_Json.decodeContainer, 'maybe', decoder);
4820};
4821var _elm_lang$core$Json_Decode$index = _elm_lang$core$Native_Json.decodeIndex;
4822var _elm_lang$core$Json_Decode$field = _elm_lang$core$Native_Json.decodeField;
4823var _elm_lang$core$Json_Decode$at = F2(
4824	function (fields, decoder) {
4825		return A3(_elm_lang$core$List$foldr, _elm_lang$core$Json_Decode$field, decoder, fields);
4826	});
4827var _elm_lang$core$Json_Decode$keyValuePairs = _elm_lang$core$Native_Json.decodeKeyValuePairs;
4828var _elm_lang$core$Json_Decode$dict = function (decoder) {
4829	return A2(
4830		_elm_lang$core$Json_Decode$map,
4831		_elm_lang$core$Dict$fromList,
4832		_elm_lang$core$Json_Decode$keyValuePairs(decoder));
4833};
4834var _elm_lang$core$Json_Decode$array = function (decoder) {
4835	return A2(_elm_lang$core$Native_Json.decodeContainer, 'array', decoder);
4836};
4837var _elm_lang$core$Json_Decode$list = function (decoder) {
4838	return A2(_elm_lang$core$Native_Json.decodeContainer, 'list', decoder);
4839};
4840var _elm_lang$core$Json_Decode$nullable = function (decoder) {
4841	return _elm_lang$core$Json_Decode$oneOf(
4842		{
4843			ctor: '::',
4844			_0: _elm_lang$core$Json_Decode$null(_elm_lang$core$Maybe$Nothing),
4845			_1: {
4846				ctor: '::',
4847				_0: A2(_elm_lang$core$Json_Decode$map, _elm_lang$core$Maybe$Just, decoder),
4848				_1: {ctor: '[]'}
4849			}
4850		});
4851};
4852var _elm_lang$core$Json_Decode$float = _elm_lang$core$Native_Json.decodePrimitive('float');
4853var _elm_lang$core$Json_Decode$int = _elm_lang$core$Native_Json.decodePrimitive('int');
4854var _elm_lang$core$Json_Decode$bool = _elm_lang$core$Native_Json.decodePrimitive('bool');
4855var _elm_lang$core$Json_Decode$string = _elm_lang$core$Native_Json.decodePrimitive('string');
4856var _elm_lang$core$Json_Decode$Decoder = {ctor: 'Decoder'};
4857
4858var _elm_lang$core$Debug$crash = _elm_lang$core$Native_Debug.crash;
4859var _elm_lang$core$Debug$log = _elm_lang$core$Native_Debug.log;
4860
4861var _elm_lang$core$Tuple$mapSecond = F2(
4862	function (func, _p0) {
4863		var _p1 = _p0;
4864		return {
4865			ctor: '_Tuple2',
4866			_0: _p1._0,
4867			_1: func(_p1._1)
4868		};
4869	});
4870var _elm_lang$core$Tuple$mapFirst = F2(
4871	function (func, _p2) {
4872		var _p3 = _p2;
4873		return {
4874			ctor: '_Tuple2',
4875			_0: func(_p3._0),
4876			_1: _p3._1
4877		};
4878	});
4879var _elm_lang$core$Tuple$second = function (_p4) {
4880	var _p5 = _p4;
4881	return _p5._1;
4882};
4883var _elm_lang$core$Tuple$first = function (_p6) {
4884	var _p7 = _p6;
4885	return _p7._0;
4886};
4887
4888//import //
4889
4890var _elm_lang$core$Native_Platform = function() {
4891
4892
4893// PROGRAMS
4894
4895function program(impl)
4896{
4897	return function(flagDecoder)
4898	{
4899		return function(object, moduleName)
4900		{
4901			object['worker'] = function worker(flags)
4902			{
4903				if (typeof flags !== 'undefined')
4904				{
4905					throw new Error(
4906						'The `' + moduleName + '` module does not need flags.\n'
4907						+ 'Call ' + moduleName + '.worker() with no arguments and you should be all set!'
4908					);
4909				}
4910
4911				return initialize(
4912					impl.init,
4913					impl.update,
4914					impl.subscriptions,
4915					renderer
4916				);
4917			};
4918		};
4919	};
4920}
4921
4922function programWithFlags(impl)
4923{
4924	return function(flagDecoder)
4925	{
4926		return function(object, moduleName)
4927		{
4928			object['worker'] = function worker(flags)
4929			{
4930				if (typeof flagDecoder === 'undefined')
4931				{
4932					throw new Error(
4933						'Are you trying to sneak a Never value into Elm? Trickster!\n'
4934						+ 'It looks like ' + moduleName + '.main is defined with `programWithFlags` but has type `Program Never`.\n'
4935						+ 'Use `program` instead if you do not want flags.'
4936					);
4937				}
4938
4939				var result = A2(_elm_lang$core$Native_Json.run, flagDecoder, flags);
4940				if (result.ctor === 'Err')
4941				{
4942					throw new Error(
4943						moduleName + '.worker(...) was called with an unexpected argument.\n'
4944						+ 'I tried to convert it to an Elm value, but ran into this problem:\n\n'
4945						+ result._0
4946					);
4947				}
4948
4949				return initialize(
4950					impl.init(result._0),
4951					impl.update,
4952					impl.subscriptions,
4953					renderer
4954				);
4955			};
4956		};
4957	};
4958}
4959
4960function renderer(enqueue, _)
4961{
4962	return function(_) {};
4963}
4964
4965
4966// HTML TO PROGRAM
4967
4968function htmlToProgram(vnode)
4969{
4970	var emptyBag = batch(_elm_lang$core$Native_List.Nil);
4971	var noChange = _elm_lang$core$Native_Utils.Tuple2(
4972		_elm_lang$core$Native_Utils.Tuple0,
4973		emptyBag
4974	);
4975
4976	return _elm_lang$virtual_dom$VirtualDom$program({
4977		init: noChange,
4978		view: function(model) { return main; },
4979		update: F2(function(msg, model) { return noChange; }),
4980		subscriptions: function (model) { return emptyBag; }
4981	});
4982}
4983
4984
4985// INITIALIZE A PROGRAM
4986
4987function initialize(init, update, subscriptions, renderer)
4988{
4989	// ambient state
4990	var managers = {};
4991	var updateView;
4992
4993	// init and update state in main process
4994	var initApp = _elm_lang$core$Native_Scheduler.nativeBinding(function(callback) {
4995		var model = init._0;
4996		updateView = renderer(enqueue, model);
4997		var cmds = init._1;
4998		var subs = subscriptions(model);
4999		dispatchEffects(managers, cmds, subs);
5000		callback(_elm_lang$core$Native_Scheduler.succeed(model));
5001	});
5002
5003	function onMessage(msg, model)
5004	{
5005		return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback) {
5006			var results = A2(update, msg, model);
5007			model = results._0;
5008			updateView(model);
5009			var cmds = results._1;
5010			var subs = subscriptions(model);
5011			dispatchEffects(managers, cmds, subs);
5012			callback(_elm_lang$core$Native_Scheduler.succeed(model));
5013		});
5014	}
5015
5016	var mainProcess = spawnLoop(initApp, onMessage);
5017
5018	function enqueue(msg)
5019	{
5020		_elm_lang$core$Native_Scheduler.rawSend(mainProcess, msg);
5021	}
5022
5023	var ports = setupEffects(managers, enqueue);
5024
5025	return ports ? { ports: ports } : {};
5026}
5027
5028
5029// EFFECT MANAGERS
5030
5031var effectManagers = {};
5032
5033function setupEffects(managers, callback)
5034{
5035	var ports;
5036
5037	// setup all necessary effect managers
5038	for (var key in effectManagers)
5039	{
5040		var manager = effectManagers[key];
5041
5042		if (manager.isForeign)
5043		{
5044			ports = ports || {};
5045			ports[key] = manager.tag === 'cmd'
5046				? setupOutgoingPort(key)
5047				: setupIncomingPort(key, callback);
5048		}
5049
5050		managers[key] = makeManager(manager, callback);
5051	}
5052
5053	return ports;
5054}
5055
5056function makeManager(info, callback)
5057{
5058	var router = {
5059		main: callback,
5060		self: undefined
5061	};
5062
5063	var tag = info.tag;
5064	var onEffects = info.onEffects;
5065	var onSelfMsg = info.onSelfMsg;
5066
5067	function onMessage(msg, state)
5068	{
5069		if (msg.ctor === 'self')
5070		{
5071			return A3(onSelfMsg, router, msg._0, state);
5072		}
5073
5074		var fx = msg._0;
5075		switch (tag)
5076		{
5077			case 'cmd':
5078				return A3(onEffects, router, fx.cmds, state);
5079
5080			case 'sub':
5081				return A3(onEffects, router, fx.subs, state);
5082
5083			case 'fx':
5084				return A4(onEffects, router, fx.cmds, fx.subs, state);
5085		}
5086	}
5087
5088	var process = spawnLoop(info.init, onMessage);
5089	router.self = process;
5090	return process;
5091}
5092
5093function sendToApp(router, msg)
5094{
5095	return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)
5096	{
5097		router.main(msg);
5098		callback(_elm_lang$core$Native_Scheduler.succeed(_elm_lang$core$Native_Utils.Tuple0));
5099	});
5100}
5101
5102function sendToSelf(router, msg)
5103{
5104	return A2(_elm_lang$core$Native_Scheduler.send, router.self, {
5105		ctor: 'self',
5106		_0: msg
5107	});
5108}
5109
5110
5111// HELPER for STATEFUL LOOPS
5112
5113function spawnLoop(init, onMessage)
5114{
5115	var andThen = _elm_lang$core$Native_Scheduler.andThen;
5116
5117	function loop(state)
5118	{
5119		var handleMsg = _elm_lang$core$Native_Scheduler.receive(function(msg) {
5120			return onMessage(msg, state);
5121		});
5122		return A2(andThen, loop, handleMsg);
5123	}
5124
5125	var task = A2(andThen, loop, init);
5126
5127	return _elm_lang$core$Native_Scheduler.rawSpawn(task);
5128}
5129
5130
5131// BAGS
5132
5133function leaf(home)
5134{
5135	return function(value)
5136	{
5137		return {
5138			type: 'leaf',
5139			home: home,
5140			value: value
5141		};
5142	};
5143}
5144
5145function batch(list)
5146{
5147	return {
5148		type: 'node',
5149		branches: list
5150	};
5151}
5152
5153function map(tagger, bag)
5154{
5155	return {
5156		type: 'map',
5157		tagger: tagger,
5158		tree: bag
5159	}
5160}
5161
5162
5163// PIPE BAGS INTO EFFECT MANAGERS
5164
5165function dispatchEffects(managers, cmdBag, subBag)
5166{
5167	var effectsDict = {};
5168	gatherEffects(true, cmdBag, effectsDict, null);
5169	gatherEffects(false, subBag, effectsDict, null);
5170
5171	for (var home in managers)
5172	{
5173		var fx = home in effectsDict
5174			? effectsDict[home]
5175			: {
5176				cmds: _elm_lang$core$Native_List.Nil,
5177				subs: _elm_lang$core$Native_List.Nil
5178			};
5179
5180		_elm_lang$core$Native_Scheduler.rawSend(managers[home], { ctor: 'fx', _0: fx });
5181	}
5182}
5183
5184function gatherEffects(isCmd, bag, effectsDict, taggers)
5185{
5186	switch (bag.type)
5187	{
5188		case 'leaf':
5189			var home = bag.home;
5190			var effect = toEffect(isCmd, home, taggers, bag.value);
5191			effectsDict[home] = insert(isCmd, effect, effectsDict[home]);
5192			return;
5193
5194		case 'node':
5195			var list = bag.branches;
5196			while (list.ctor !== '[]')
5197			{
5198				gatherEffects(isCmd, list._0, effectsDict, taggers);
5199				list = list._1;
5200			}
5201			return;
5202
5203		case 'map':
5204			gatherEffects(isCmd, bag.tree, effectsDict, {
5205				tagger: bag.tagger,
5206				rest: taggers
5207			});
5208			return;
5209	}
5210}
5211
5212function toEffect(isCmd, home, taggers, value)
5213{
5214	function applyTaggers(x)
5215	{
5216		var temp = taggers;
5217		while (temp)
5218		{
5219			x = temp.tagger(x);
5220			temp = temp.rest;
5221		}
5222		return x;
5223	}
5224
5225	var map = isCmd
5226		? effectManagers[home].cmdMap
5227		: effectManagers[home].subMap;
5228
5229	return A2(map, applyTaggers, value)
5230}
5231
5232function insert(isCmd, newEffect, effects)
5233{
5234	effects = effects || {
5235		cmds: _elm_lang$core$Native_List.Nil,
5236		subs: _elm_lang$core$Native_List.Nil
5237	};
5238	if (isCmd)
5239	{
5240		effects.cmds = _elm_lang$core$Native_List.Cons(newEffect, effects.cmds);
5241		return effects;
5242	}
5243	effects.subs = _elm_lang$core$Native_List.Cons(newEffect, effects.subs);
5244	return effects;
5245}
5246
5247
5248// PORTS
5249
5250function checkPortName(name)
5251{
5252	if (name in effectManagers)
5253	{
5254		throw new Error('There can only be one port named `' + name + '`, but your program has multiple.');
5255	}
5256}
5257
5258
5259// OUTGOING PORTS
5260
5261function outgoingPort(name, converter)
5262{
5263	checkPortName(name);
5264	effectManagers[name] = {
5265		tag: 'cmd',
5266		cmdMap: outgoingPortMap,
5267		converter: converter,
5268		isForeign: true
5269	};
5270	return leaf(name);
5271}
5272
5273var outgoingPortMap = F2(function cmdMap(tagger, value) {
5274	return value;
5275});
5276
5277function setupOutgoingPort(name)
5278{
5279	var subs = [];
5280	var converter = effectManagers[name].converter;
5281
5282	// CREATE MANAGER
5283
5284	var init = _elm_lang$core$Native_Scheduler.succeed(null);
5285
5286	function onEffects(router, cmdList, state)
5287	{
5288		while (cmdList.ctor !== '[]')
5289		{
5290			// grab a separate reference to subs in case unsubscribe is called
5291			var currentSubs = subs;
5292			var value = converter(cmdList._0);
5293			for (var i = 0; i < currentSubs.length; i++)
5294			{
5295				currentSubs[i](value);
5296			}
5297			cmdList = cmdList._1;
5298		}
5299		return init;
5300	}
5301
5302	effectManagers[name].init = init;
5303	effectManagers[name].onEffects = F3(onEffects);
5304
5305	// PUBLIC API
5306
5307	function subscribe(callback)
5308	{
5309		subs.push(callback);
5310	}
5311
5312	function unsubscribe(callback)
5313	{
5314		// copy subs into a new array in case unsubscribe is called within a
5315		// subscribed callback
5316		subs = subs.slice();
5317		var index = subs.indexOf(callback);
5318		if (index >= 0)
5319		{
5320			subs.splice(index, 1);
5321		}
5322	}
5323
5324	return {
5325		subscribe: subscribe,
5326		unsubscribe: unsubscribe
5327	};
5328}
5329
5330
5331// INCOMING PORTS
5332
5333function incomingPort(name, converter)
5334{
5335	checkPortName(name);
5336	effectManagers[name] = {
5337		tag: 'sub',
5338		subMap: incomingPortMap,
5339		converter: converter,
5340		isForeign: true
5341	};
5342	return leaf(name);
5343}
5344
5345var incomingPortMap = F2(function subMap(tagger, finalTagger)
5346{
5347	return function(value)
5348	{
5349		return tagger(finalTagger(value));
5350	};
5351});
5352
5353function setupIncomingPort(name, callback)
5354{
5355	var sentBeforeInit = [];
5356	var subs = _elm_lang$core$Native_List.Nil;
5357	var converter = effectManagers[name].converter;
5358	var currentOnEffects = preInitOnEffects;
5359	var currentSend = preInitSend;
5360
5361	// CREATE MANAGER
5362
5363	var init = _elm_lang$core$Native_Scheduler.succeed(null);
5364
5365	function preInitOnEffects(router, subList, state)
5366	{
5367		var postInitResult = postInitOnEffects(router, subList, state);
5368
5369		for(var i = 0; i < sentBeforeInit.length; i++)
5370		{
5371			postInitSend(sentBeforeInit[i]);
5372		}
5373
5374		sentBeforeInit = null; // to release objects held in queue
5375		currentSend = postInitSend;
5376		currentOnEffects = postInitOnEffects;
5377		return postInitResult;
5378	}
5379
5380	function postInitOnEffects(router, subList, state)
5381	{
5382		subs = subList;
5383		return init;
5384	}
5385
5386	function onEffects(router, subList, state)
5387	{
5388		return currentOnEffects(router, subList, state);
5389	}
5390
5391	effectManagers[name].init = init;
5392	effectManagers[name].onEffects = F3(onEffects);
5393
5394	// PUBLIC API
5395
5396	function preInitSend(value)
5397	{
5398		sentBeforeInit.push(value);
5399	}
5400
5401	function postInitSend(value)
5402	{
5403		var temp = subs;
5404		while (temp.ctor !== '[]')
5405		{
5406			callback(temp._0(value));
5407			temp = temp._1;
5408		}
5409	}
5410
5411	function send(incomingValue)
5412	{
5413		var result = A2(_elm_lang$core$Json_Decode$decodeValue, converter, incomingValue);
5414		if (result.ctor === 'Err')
5415		{
5416			throw new Error('Trying to send an unexpected type of value through port `' + name + '`:\n' + result._0);
5417		}
5418
5419		currentSend(result._0);
5420	}
5421
5422	return { send: send };
5423}
5424
5425return {
5426	// routers
5427	sendToApp: F2(sendToApp),
5428	sendToSelf: F2(sendToSelf),
5429
5430	// global setup
5431	effectManagers: effectManagers,
5432	outgoingPort: outgoingPort,
5433	incomingPort: incomingPort,
5434
5435	htmlToProgram: htmlToProgram,
5436	program: program,
5437	programWithFlags: programWithFlags,
5438	initialize: initialize,
5439
5440	// effect bags
5441	leaf: leaf,
5442	batch: batch,
5443	map: F2(map)
5444};
5445
5446}();
5447
5448//import Native.Utils //
5449
5450var _elm_lang$core$Native_Scheduler = function() {
5451
5452var MAX_STEPS = 10000;
5453
5454
5455// TASKS
5456
5457function succeed(value)
5458{
5459	return {
5460		ctor: '_Task_succeed',
5461		value: value
5462	};
5463}
5464
5465function fail(error)
5466{
5467	return {
5468		ctor: '_Task_fail',
5469		value: error
5470	};
5471}
5472
5473function nativeBinding(callback)
5474{
5475	return {
5476		ctor: '_Task_nativeBinding',
5477		callback: callback,
5478		cancel: null
5479	};
5480}
5481
5482function andThen(callback, task)
5483{
5484	return {
5485		ctor: '_Task_andThen',
5486		callback: callback,
5487		task: task
5488	};
5489}
5490
5491function onError(callback, task)
5492{
5493	return {
5494		ctor: '_Task_onError',
5495		callback: callback,
5496		task: task
5497	};
5498}
5499
5500function receive(callback)
5501{
5502	return {
5503		ctor: '_Task_receive',
5504		callback: callback
5505	};
5506}
5507
5508
5509// PROCESSES
5510
5511function rawSpawn(task)
5512{
5513	var process = {
5514		ctor: '_Process',
5515		id: _elm_lang$core$Native_Utils.guid(),
5516		root: task,
5517		stack: null,
5518		mailbox: []
5519	};
5520
5521	enqueue(process);
5522
5523	return process;
5524}
5525
5526function spawn(task)
5527{
5528	return nativeBinding(function(callback) {
5529		var process = rawSpawn(task);
5530		callback(succeed(process));
5531	});
5532}
5533
5534function rawSend(process, msg)
5535{
5536	process.mailbox.push(msg);
5537	enqueue(process);
5538}
5539
5540function send(process, msg)
5541{
5542	return nativeBinding(function(callback) {
5543		rawSend(process, msg);
5544		callback(succeed(_elm_lang$core$Native_Utils.Tuple0));
5545	});
5546}
5547
5548function kill(process)
5549{
5550	return nativeBinding(function(callback) {
5551		var root = process.root;
5552		if (root.ctor === '_Task_nativeBinding' && root.cancel)
5553		{
5554			root.cancel();
5555		}
5556
5557		process.root = null;
5558
5559		callback(succeed(_elm_lang$core$Native_Utils.Tuple0));
5560	});
5561}
5562
5563function sleep(time)
5564{
5565	return nativeBinding(function(callback) {
5566		var id = setTimeout(function() {
5567			callback(succeed(_elm_lang$core$Native_Utils.Tuple0));
5568		}, time);
5569
5570		return function() { clearTimeout(id); };
5571	});
5572}
5573
5574
5575// STEP PROCESSES
5576
5577function step(numSteps, process)
5578{
5579	while (numSteps < MAX_STEPS)
5580	{
5581		var ctor = process.root.ctor;
5582
5583		if (ctor === '_Task_succeed')
5584		{
5585			while (process.stack && process.stack.ctor === '_Task_onError')
5586			{
5587				process.stack = process.stack.rest;
5588			}
5589			if (process.stack === null)
5590			{
5591				break;
5592			}
5593			process.root = process.stack.callback(process.root.value);
5594			process.stack = process.stack.rest;
5595			++numSteps;
5596			continue;
5597		}
5598
5599		if (ctor === '_Task_fail')
5600		{
5601			while (process.stack && process.stack.ctor === '_Task_andThen')
5602			{
5603				process.stack = process.stack.rest;
5604			}
5605			if (process.stack === null)
5606			{
5607				break;
5608			}
5609			process.root = process.stack.callback(process.root.value);
5610			process.stack = process.stack.rest;
5611			++numSteps;
5612			continue;
5613		}
5614
5615		if (ctor === '_Task_andThen')
5616		{
5617			process.stack = {
5618				ctor: '_Task_andThen',
5619				callback: process.root.callback,
5620				rest: process.stack
5621			};
5622			process.root = process.root.task;
5623			++numSteps;
5624			continue;
5625		}
5626
5627		if (ctor === '_Task_onError')
5628		{
5629			process.stack = {
5630				ctor: '_Task_onError',
5631				callback: process.root.callback,
5632				rest: process.stack
5633			};
5634			process.root = process.root.task;
5635			++numSteps;
5636			continue;
5637		}
5638
5639		if (ctor === '_Task_nativeBinding')
5640		{
5641			process.root.cancel = process.root.callback(function(newRoot) {
5642				process.root = newRoot;
5643				enqueue(process);
5644			});
5645
5646			break;
5647		}
5648
5649		if (ctor === '_Task_receive')
5650		{
5651			var mailbox = process.mailbox;
5652			if (mailbox.length === 0)
5653			{
5654				break;
5655			}
5656
5657			process.root = process.root.callback(mailbox.shift());
5658			++numSteps;
5659			continue;
5660		}
5661
5662		throw new Error(ctor);
5663	}
5664
5665	if (numSteps < MAX_STEPS)
5666	{
5667		return numSteps + 1;
5668	}
5669	enqueue(process);
5670
5671	return numSteps;
5672}
5673
5674
5675// WORK QUEUE
5676
5677var working = false;
5678var workQueue = [];
5679
5680function enqueue(process)
5681{
5682	workQueue.push(process);
5683
5684	if (!working)
5685	{
5686		setTimeout(work, 0);
5687		working = true;
5688	}
5689}
5690
5691function work()
5692{
5693	var numSteps = 0;
5694	var process;
5695	while (numSteps < MAX_STEPS && (process = workQueue.shift()))
5696	{
5697		if (process.root)
5698		{
5699			numSteps = step(numSteps, process);
5700		}
5701	}
5702	if (!process)
5703	{
5704		working = false;
5705		return;
5706	}
5707	setTimeout(work, 0);
5708}
5709
5710
5711return {
5712	succeed: succeed,
5713	fail: fail,
5714	nativeBinding: nativeBinding,
5715	andThen: F2(andThen),
5716	onError: F2(onError),
5717	receive: receive,
5718
5719	spawn: spawn,
5720	kill: kill,
5721	sleep: sleep,
5722	send: F2(send),
5723
5724	rawSpawn: rawSpawn,
5725	rawSend: rawSend
5726};
5727
5728}();
5729var _elm_lang$core$Platform_Cmd$batch = _elm_lang$core$Native_Platform.batch;
5730var _elm_lang$core$Platform_Cmd$none = _elm_lang$core$Platform_Cmd$batch(
5731	{ctor: '[]'});
5732var _elm_lang$core$Platform_Cmd_ops = _elm_lang$core$Platform_Cmd_ops || {};
5733_elm_lang$core$Platform_Cmd_ops['!'] = F2(
5734	function (model, commands) {
5735		return {
5736			ctor: '_Tuple2',
5737			_0: model,
5738			_1: _elm_lang$core$Platform_Cmd$batch(commands)
5739		};
5740	});
5741var _elm_lang$core$Platform_Cmd$map = _elm_lang$core$Native_Platform.map;
5742var _elm_lang$core$Platform_Cmd$Cmd = {ctor: 'Cmd'};
5743
5744var _elm_lang$core$Platform_Sub$batch = _elm_lang$core$Native_Platform.batch;
5745var _elm_lang$core$Platform_Sub$none = _elm_lang$core$Platform_Sub$batch(
5746	{ctor: '[]'});
5747var _elm_lang$core$Platform_Sub$map = _elm_lang$core$Native_Platform.map;
5748var _elm_lang$core$Platform_Sub$Sub = {ctor: 'Sub'};
5749
5750var _elm_lang$core$Platform$hack = _elm_lang$core$Native_Scheduler.succeed;
5751var _elm_lang$core$Platform$sendToSelf = _elm_lang$core$Native_Platform.sendToSelf;
5752var _elm_lang$core$Platform$sendToApp = _elm_lang$core$Native_Platform.sendToApp;
5753var _elm_lang$core$Platform$programWithFlags = _elm_lang$core$Native_Platform.programWithFlags;
5754var _elm_lang$core$Platform$program = _elm_lang$core$Native_Platform.program;
5755var _elm_lang$core$Platform$Program = {ctor: 'Program'};
5756var _elm_lang$core$Platform$Task = {ctor: 'Task'};
5757var _elm_lang$core$Platform$ProcessId = {ctor: 'ProcessId'};
5758var _elm_lang$core$Platform$Router = {ctor: 'Router'};
5759
5760var _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$decode = _elm_lang$core$Json_Decode$succeed;
5761var _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$resolve = _elm_lang$core$Json_Decode$andThen(_elm_lang$core$Basics$identity);
5762var _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$custom = F2(
5763	function (decoder, wrapped) {
5764		return A3(
5765			_elm_lang$core$Json_Decode$map2,
5766			F2(
5767				function (x, y) {
5768					return x(y);
5769				}),
5770			wrapped,
5771			decoder);
5772	});
5773var _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$hardcoded = function (_p0) {
5774	return _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$custom(
5775		_elm_lang$core$Json_Decode$succeed(_p0));
5776};
5777var _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$optionalDecoder = F3(
5778	function (pathDecoder, valDecoder, fallback) {
5779		var nullOr = function (decoder) {
5780			return _elm_lang$core$Json_Decode$oneOf(
5781				{
5782					ctor: '::',
5783					_0: decoder,
5784					_1: {
5785						ctor: '::',
5786						_0: _elm_lang$core$Json_Decode$null(fallback),
5787						_1: {ctor: '[]'}
5788					}
5789				});
5790		};
5791		var handleResult = function (input) {
5792			var _p1 = A2(_elm_lang$core$Json_Decode$decodeValue, pathDecoder, input);
5793			if (_p1.ctor === 'Ok') {
5794				var _p2 = A2(
5795					_elm_lang$core$Json_Decode$decodeValue,
5796					nullOr(valDecoder),
5797					_p1._0);
5798				if (_p2.ctor === 'Ok') {
5799					return _elm_lang$core$Json_Decode$succeed(_p2._0);
5800				} else {
5801					return _elm_lang$core$Json_Decode$fail(_p2._0);
5802				}
5803			} else {
5804				var _p3 = A2(
5805					_elm_lang$core$Json_Decode$decodeValue,
5806					_elm_lang$core$Json_Decode$keyValuePairs(_elm_lang$core$Json_Decode$value),
5807					input);
5808				if (_p3.ctor === 'Ok') {
5809					return _elm_lang$core$Json_Decode$succeed(fallback);
5810				} else {
5811					return _elm_lang$core$Json_Decode$fail(_p3._0);
5812				}
5813			}
5814		};
5815		return A2(_elm_lang$core$Json_Decode$andThen, handleResult, _elm_lang$core$Json_Decode$value);
5816	});
5817var _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$optionalAt = F4(
5818	function (path, valDecoder, fallback, decoder) {
5819		return A2(
5820			_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$custom,
5821			A3(
5822				_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$optionalDecoder,
5823				A2(_elm_lang$core$Json_Decode$at, path, _elm_lang$core$Json_Decode$value),
5824				valDecoder,
5825				fallback),
5826			decoder);
5827	});
5828var _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$optional = F4(
5829	function (key, valDecoder, fallback, decoder) {
5830		return A2(
5831			_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$custom,
5832			A3(
5833				_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$optionalDecoder,
5834				A2(_elm_lang$core$Json_Decode$field, key, _elm_lang$core$Json_Decode$value),
5835				valDecoder,
5836				fallback),
5837			decoder);
5838	});
5839var _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$requiredAt = F3(
5840	function (path, valDecoder, decoder) {
5841		return A2(
5842			_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$custom,
5843			A2(_elm_lang$core$Json_Decode$at, path, valDecoder),
5844			decoder);
5845	});
5846var _NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required = F3(
5847	function (key, valDecoder, decoder) {
5848		return A2(
5849			_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$custom,
5850			A2(_elm_lang$core$Json_Decode$field, key, valDecoder),
5851			decoder);
5852	});
5853
5854var _debois$elm_dom$DOM$className = A2(
5855	_elm_lang$core$Json_Decode$at,
5856	{
5857		ctor: '::',
5858		_0: 'className',
5859		_1: {ctor: '[]'}
5860	},
5861	_elm_lang$core$Json_Decode$string);
5862var _debois$elm_dom$DOM$scrollTop = A2(_elm_lang$core$Json_Decode$field, 'scrollTop', _elm_lang$core$Json_Decode$float);
5863var _debois$elm_dom$DOM$scrollLeft = A2(_elm_lang$core$Json_Decode$field, 'scrollLeft', _elm_lang$core$Json_Decode$float);
5864var _debois$elm_dom$DOM$offsetTop = A2(_elm_lang$core$Json_Decode$field, 'offsetTop', _elm_lang$core$Json_Decode$float);
5865var _debois$elm_dom$DOM$offsetLeft = A2(_elm_lang$core$Json_Decode$field, 'offsetLeft', _elm_lang$core$Json_Decode$float);
5866var _debois$elm_dom$DOM$offsetHeight = A2(_elm_lang$core$Json_Decode$field, 'offsetHeight', _elm_lang$core$Json_Decode$float);
5867var _debois$elm_dom$DOM$offsetWidth = A2(_elm_lang$core$Json_Decode$field, 'offsetWidth', _elm_lang$core$Json_Decode$float);
5868var _debois$elm_dom$DOM$childNodes = function (decoder) {
5869	var loop = F2(
5870		function (idx, xs) {
5871			return A2(
5872				_elm_lang$core$Json_Decode$andThen,
5873				function (_p0) {
5874					return A2(
5875						_elm_lang$core$Maybe$withDefault,
5876						_elm_lang$core$Json_Decode$succeed(xs),
5877						A2(
5878							_elm_lang$core$Maybe$map,
5879							function (x) {
5880								return A2(
5881									loop,
5882									idx + 1,
5883									{ctor: '::', _0: x, _1: xs});
5884							},
5885							_p0));
5886				},
5887				_elm_lang$core$Json_Decode$maybe(
5888					A2(
5889						_elm_lang$core$Json_Decode$field,
5890						_elm_lang$core$Basics$toString(idx),
5891						decoder)));
5892		});
5893	return A2(
5894		_elm_lang$core$Json_Decode$map,
5895		_elm_lang$core$List$reverse,
5896		A2(
5897			_elm_lang$core$Json_Decode$field,
5898			'childNodes',
5899			A2(
5900				loop,
5901				0,
5902				{ctor: '[]'})));
5903};
5904var _debois$elm_dom$DOM$childNode = function (idx) {
5905	return _elm_lang$core$Json_Decode$at(
5906		{
5907			ctor: '::',
5908			_0: 'childNodes',
5909			_1: {
5910				ctor: '::',
5911				_0: _elm_lang$core$Basics$toString(idx),
5912				_1: {ctor: '[]'}
5913			}
5914		});
5915};
5916var _debois$elm_dom$DOM$parentElement = function (decoder) {
5917	return A2(_elm_lang$core$Json_Decode$field, 'parentElement', decoder);
5918};
5919var _debois$elm_dom$DOM$previousSibling = function (decoder) {
5920	return A2(_elm_lang$core$Json_Decode$field, 'previousSibling', decoder);
5921};
5922var _debois$elm_dom$DOM$nextSibling = function (decoder) {
5923	return A2(_elm_lang$core$Json_Decode$field, 'nextSibling', decoder);
5924};
5925var _debois$elm_dom$DOM$offsetParent = F2(
5926	function (x, decoder) {
5927		return _elm_lang$core$Json_Decode$oneOf(
5928			{
5929				ctor: '::',
5930				_0: A2(
5931					_elm_lang$core$Json_Decode$field,
5932					'offsetParent',
5933					_elm_lang$core$Json_Decode$null(x)),
5934				_1: {
5935					ctor: '::',
5936					_0: A2(_elm_lang$core$Json_Decode$field, 'offsetParent', decoder),
5937					_1: {ctor: '[]'}
5938				}
5939			});
5940	});
5941var _debois$elm_dom$DOM$position = F2(
5942	function (x, y) {
5943		return A2(
5944			_elm_lang$core$Json_Decode$andThen,
5945			function (_p1) {
5946				var _p2 = _p1;
5947				var _p4 = _p2._1;
5948				var _p3 = _p2._0;
5949				return A2(
5950					_debois$elm_dom$DOM$offsetParent,
5951					{ctor: '_Tuple2', _0: _p3, _1: _p4},
5952					A2(_debois$elm_dom$DOM$position, _p3, _p4));
5953			},
5954			A5(
5955				_elm_lang$core$Json_Decode$map4,
5956				F4(
5957					function (scrollLeft, scrollTop, offsetLeft, offsetTop) {
5958						return {ctor: '_Tuple2', _0: (x + offsetLeft) - scrollLeft, _1: (y + offsetTop) - scrollTop};
5959					}),
5960				_debois$elm_dom$DOM$scrollLeft,
5961				_debois$elm_dom$DOM$scrollTop,
5962				_debois$elm_dom$DOM$offsetLeft,
5963				_debois$elm_dom$DOM$offsetTop));
5964	});
5965var _debois$elm_dom$DOM$boundingClientRect = A4(
5966	_elm_lang$core$Json_Decode$map3,
5967	F3(
5968		function (_p5, width, height) {
5969			var _p6 = _p5;
5970			return {top: _p6._1, left: _p6._0, width: width, height: height};
5971		}),
5972	A2(_debois$elm_dom$DOM$position, 0, 0),
5973	_debois$elm_dom$DOM$offsetWidth,
5974	_debois$elm_dom$DOM$offsetHeight);
5975var _debois$elm_dom$DOM$target = function (decoder) {
5976	return A2(_elm_lang$core$Json_Decode$field, 'target', decoder);
5977};
5978var _debois$elm_dom$DOM$Rectangle = F4(
5979	function (a, b, c, d) {
5980		return {top: a, left: b, width: c, height: d};
5981	});
5982
5983var _elm_lang$animation_frame$Native_AnimationFrame = function()
5984{
5985
5986function create()
5987{
5988	return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)
5989	{
5990		var id = requestAnimationFrame(function() {
5991			callback(_elm_lang$core$Native_Scheduler.succeed(Date.now()));
5992		});
5993
5994		return function() {
5995			cancelAnimationFrame(id);
5996		};
5997	});
5998}
5999
6000return {
6001	create: create
6002};
6003
6004}();
6005
6006var _elm_lang$core$Task$onError = _elm_lang$core$Native_Scheduler.onError;
6007var _elm_lang$core$Task$andThen = _elm_lang$core$Native_Scheduler.andThen;
6008var _elm_lang$core$Task$spawnCmd = F2(
6009	function (router, _p0) {
6010		var _p1 = _p0;
6011		return _elm_lang$core$Native_Scheduler.spawn(
6012			A2(
6013				_elm_lang$core$Task$andThen,
6014				_elm_lang$core$Platform$sendToApp(router),
6015				_p1._0));
6016	});
6017var _elm_lang$core$Task$fail = _elm_lang$core$Native_Scheduler.fail;
6018var _elm_lang$core$Task$mapError = F2(
6019	function (convert, task) {
6020		return A2(
6021			_elm_lang$core$Task$onError,
6022			function (_p2) {
6023				return _elm_lang$core$Task$fail(
6024					convert(_p2));
6025			},
6026			task);
6027	});
6028var _elm_lang$core$Task$succeed = _elm_lang$core$Native_Scheduler.succeed;
6029var _elm_lang$core$Task$map = F2(
6030	function (func, taskA) {
6031		return A2(
6032			_elm_lang$core$Task$andThen,
6033			function (a) {
6034				return _elm_lang$core$Task$succeed(
6035					func(a));
6036			},
6037			taskA);
6038	});
6039var _elm_lang$core$Task$map2 = F3(
6040	function (func, taskA, taskB) {
6041		return A2(
6042			_elm_lang$core$Task$andThen,
6043			function (a) {
6044				return A2(
6045					_elm_lang$core$Task$andThen,
6046					function (b) {
6047						return _elm_lang$core$Task$succeed(
6048							A2(func, a, b));
6049					},
6050					taskB);
6051			},
6052			taskA);
6053	});
6054var _elm_lang$core$Task$map3 = F4(
6055	function (func, taskA, taskB, taskC) {
6056		return A2(
6057			_elm_lang$core$Task$andThen,
6058			function (a) {
6059				return A2(
6060					_elm_lang$core$Task$andThen,
6061					function (b) {
6062						return A2(
6063							_elm_lang$core$Task$andThen,
6064							function (c) {
6065								return _elm_lang$core$Task$succeed(
6066									A3(func, a, b, c));
6067							},
6068							taskC);
6069					},
6070					taskB);
6071			},
6072			taskA);
6073	});
6074var _elm_lang$core$Task$map4 = F5(
6075	function (func, taskA, taskB, taskC, taskD) {
6076		return A2(
6077			_elm_lang$core$Task$andThen,
6078			function (a) {
6079				return A2(
6080					_elm_lang$core$Task$andThen,
6081					function (b) {
6082						return A2(
6083							_elm_lang$core$Task$andThen,
6084							function (c) {
6085								return A2(
6086									_elm_lang$core$Task$andThen,
6087									function (d) {
6088										return _elm_lang$core$Task$succeed(
6089											A4(func, a, b, c, d));
6090									},
6091									taskD);
6092							},
6093							taskC);
6094					},
6095					taskB);
6096			},
6097			taskA);
6098	});
6099var _elm_lang$core$Task$map5 = F6(
6100	function (func, taskA, taskB, taskC, taskD, taskE) {
6101		return A2(
6102			_elm_lang$core$Task$andThen,
6103			function (a) {
6104				return A2(
6105					_elm_lang$core$Task$andThen,
6106					function (b) {
6107						return A2(
6108							_elm_lang$core$Task$andThen,
6109							function (c) {
6110								return A2(
6111									_elm_lang$core$Task$andThen,
6112									function (d) {
6113										return A2(
6114											_elm_lang$core$Task$andThen,
6115											function (e) {
6116												return _elm_lang$core$Task$succeed(
6117													A5(func, a, b, c, d, e));
6118											},
6119											taskE);
6120									},
6121									taskD);
6122							},
6123							taskC);
6124					},
6125					taskB);
6126			},
6127			taskA);
6128	});
6129var _elm_lang$core$Task$sequence = function (tasks) {
6130	var _p3 = tasks;
6131	if (_p3.ctor === '[]') {
6132		return _elm_lang$core$Task$succeed(
6133			{ctor: '[]'});
6134	} else {
6135		return A3(
6136			_elm_lang$core$Task$map2,
6137			F2(
6138				function (x, y) {
6139					return {ctor: '::', _0: x, _1: y};
6140				}),
6141			_p3._0,
6142			_elm_lang$core$Task$sequence(_p3._1));
6143	}
6144};
6145var _elm_lang$core$Task$onEffects = F3(
6146	function (router, commands, state) {
6147		return A2(
6148			_elm_lang$core$Task$map,
6149			function (_p4) {
6150				return {ctor: '_Tuple0'};
6151			},
6152			_elm_lang$core$Task$sequence(
6153				A2(
6154					_elm_lang$core$List$map,
6155					_elm_lang$core$Task$spawnCmd(router),
6156					commands)));
6157	});
6158var _elm_lang$core$Task$init = _elm_lang$core$Task$succeed(
6159	{ctor: '_Tuple0'});
6160var _elm_lang$core$Task$onSelfMsg = F3(
6161	function (_p7, _p6, _p5) {
6162		return _elm_lang$core$Task$succeed(
6163			{ctor: '_Tuple0'});
6164	});
6165var _elm_lang$core$Task$command = _elm_lang$core$Native_Platform.leaf('Task');
6166var _elm_lang$core$Task$Perform = function (a) {
6167	return {ctor: 'Perform', _0: a};
6168};
6169var _elm_lang$core$Task$perform = F2(
6170	function (toMessage, task) {
6171		return _elm_lang$core$Task$command(
6172			_elm_lang$core$Task$Perform(
6173				A2(_elm_lang$core$Task$map, toMessage, task)));
6174	});
6175var _elm_lang$core$Task$attempt = F2(
6176	function (resultToMessage, task) {
6177		return _elm_lang$core$Task$command(
6178			_elm_lang$core$Task$Perform(
6179				A2(
6180					_elm_lang$core$Task$onError,
6181					function (_p8) {
6182						return _elm_lang$core$Task$succeed(
6183							resultToMessage(
6184								_elm_lang$core$Result$Err(_p8)));
6185					},
6186					A2(
6187						_elm_lang$core$Task$andThen,
6188						function (_p9) {
6189							return _elm_lang$core$Task$succeed(
6190								resultToMessage(
6191									_elm_lang$core$Result$Ok(_p9)));
6192						},
6193						task))));
6194	});
6195var _elm_lang$core$Task$cmdMap = F2(
6196	function (tagger, _p10) {
6197		var _p11 = _p10;
6198		return _elm_lang$core$Task$Perform(
6199			A2(_elm_lang$core$Task$map, tagger, _p11._0));
6200	});
6201_elm_lang$core$Native_Platform.effectManagers['Task'] = {pkg: 'elm-lang/core', init: _elm_lang$core$Task$init, onEffects: _elm_lang$core$Task$onEffects, onSelfMsg: _elm_lang$core$Task$onSelfMsg, tag: 'cmd', cmdMap: _elm_lang$core$Task$cmdMap};
6202
6203//import Native.Scheduler //
6204
6205var _elm_lang$core$Native_Time = function() {
6206
6207var now = _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)
6208{
6209	callback(_elm_lang$core$Native_Scheduler.succeed(Date.now()));
6210});
6211
6212function setInterval_(interval, task)
6213{
6214	return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)
6215	{
6216		var id = setInterval(function() {
6217			_elm_lang$core$Native_Scheduler.rawSpawn(task);
6218		}, interval);
6219
6220		return function() { clearInterval(id); };
6221	});
6222}
6223
6224return {
6225	now: now,
6226	setInterval_: F2(setInterval_)
6227};
6228
6229}();
6230var _elm_lang$core$Time$setInterval = _elm_lang$core$Native_Time.setInterval_;
6231var _elm_lang$core$Time$spawnHelp = F3(
6232	function (router, intervals, processes) {
6233		var _p0 = intervals;
6234		if (_p0.ctor === '[]') {
6235			return _elm_lang$core$Task$succeed(processes);
6236		} else {
6237			var _p1 = _p0._0;
6238			var spawnRest = function (id) {
6239				return A3(
6240					_elm_lang$core$Time$spawnHelp,
6241					router,
6242					_p0._1,
6243					A3(_elm_lang$core$Dict$insert, _p1, id, processes));
6244			};
6245			var spawnTimer = _elm_lang$core$Native_Scheduler.spawn(
6246				A2(
6247					_elm_lang$core$Time$setInterval,
6248					_p1,
6249					A2(_elm_lang$core$Platform$sendToSelf, router, _p1)));
6250			return A2(_elm_lang$core$Task$andThen, spawnRest, spawnTimer);
6251		}
6252	});
6253var _elm_lang$core$Time$addMySub = F2(
6254	function (_p2, state) {
6255		var _p3 = _p2;
6256		var _p6 = _p3._1;
6257		var _p5 = _p3._0;
6258		var _p4 = A2(_elm_lang$core$Dict$get, _p5, state);
6259		if (_p4.ctor === 'Nothing') {
6260			return A3(
6261				_elm_lang$core$Dict$insert,
6262				_p5,
6263				{
6264					ctor: '::',
6265					_0: _p6,
6266					_1: {ctor: '[]'}
6267				},
6268				state);
6269		} else {
6270			return A3(
6271				_elm_lang$core$Dict$insert,
6272				_p5,
6273				{ctor: '::', _0: _p6, _1: _p4._0},
6274				state);
6275		}
6276	});
6277var _elm_lang$core$Time$inMilliseconds = function (t) {
6278	return t;
6279};
6280var _elm_lang$core$Time$millisecond = 1;
6281var _elm_lang$core$Time$second = 1000 * _elm_lang$core$Time$millisecond;
6282var _elm_lang$core$Time$minute = 60 * _elm_lang$core$Time$second;
6283var _elm_lang$core$Time$hour = 60 * _elm_lang$core$Time$minute;
6284var _elm_lang$core$Time$inHours = function (t) {
6285	return t / _elm_lang$core$Time$hour;
6286};
6287var _elm_lang$core$Time$inMinutes = function (t) {
6288	return t / _elm_lang$core$Time$minute;
6289};
6290var _elm_lang$core$Time$inSeconds = function (t) {
6291	return t / _elm_lang$core$Time$second;
6292};
6293var _elm_lang$core$Time$now = _elm_lang$core$Native_Time.now;
6294var _elm_lang$core$Time$onSelfMsg = F3(
6295	function (router, interval, state) {
6296		var _p7 = A2(_elm_lang$core$Dict$get, interval, state.taggers);
6297		if (_p7.ctor === 'Nothing') {
6298			return _elm_lang$core$Task$succeed(state);
6299		} else {
6300			var tellTaggers = function (time) {
6301				return _elm_lang$core$Task$sequence(
6302					A2(
6303						_elm_lang$core$List$map,
6304						function (tagger) {
6305							return A2(
6306								_elm_lang$core$Platform$sendToApp,
6307								router,
6308								tagger(time));
6309						},
6310						_p7._0));
6311			};
6312			return A2(
6313				_elm_lang$core$Task$andThen,
6314				function (_p8) {
6315					return _elm_lang$core$Task$succeed(state);
6316				},
6317				A2(_elm_lang$core$Task$andThen, tellTaggers, _elm_lang$core$Time$now));
6318		}
6319	});
6320var _elm_lang$core$Time$subscription = _elm_lang$core$Native_Platform.leaf('Time');
6321var _elm_lang$core$Time$State = F2(
6322	function (a, b) {
6323		return {taggers: a, processes: b};
6324	});
6325var _elm_lang$core$Time$init = _elm_lang$core$Task$succeed(
6326	A2(_elm_lang$core$Time$State, _elm_lang$core$Dict$empty, _elm_lang$core$Dict$empty));
6327var _elm_lang$core$Time$onEffects = F3(
6328	function (router, subs, _p9) {
6329		var _p10 = _p9;
6330		var rightStep = F3(
6331			function (_p12, id, _p11) {
6332				var _p13 = _p11;
6333				return {
6334					ctor: '_Tuple3',
6335					_0: _p13._0,
6336					_1: _p13._1,
6337					_2: A2(
6338						_elm_lang$core$Task$andThen,
6339						function (_p14) {
6340							return _p13._2;
6341						},
6342						_elm_lang$core$Native_Scheduler.kill(id))
6343				};
6344			});
6345		var bothStep = F4(
6346			function (interval, taggers, id, _p15) {
6347				var _p16 = _p15;
6348				return {
6349					ctor: '_Tuple3',
6350					_0: _p16._0,
6351					_1: A3(_elm_lang$core$Dict$insert, interval, id, _p16._1),
6352					_2: _p16._2
6353				};
6354			});
6355		var leftStep = F3(
6356			function (interval, taggers, _p17) {
6357				var _p18 = _p17;
6358				return {
6359					ctor: '_Tuple3',
6360					_0: {ctor: '::', _0: interval, _1: _p18._0},
6361					_1: _p18._1,
6362					_2: _p18._2
6363				};
6364			});
6365		var newTaggers = A3(_elm_lang$core$List$foldl, _elm_lang$core$Time$addMySub, _elm_lang$core$Dict$empty, subs);
6366		var _p19 = A6(
6367			_elm_lang$core$Dict$merge,
6368			leftStep,
6369			bothStep,
6370			rightStep,
6371			newTaggers,
6372			_p10.processes,
6373			{
6374				ctor: '_Tuple3',
6375				_0: {ctor: '[]'},
6376				_1: _elm_lang$core$Dict$empty,
6377				_2: _elm_lang$core$Task$succeed(
6378					{ctor: '_Tuple0'})
6379			});
6380		var spawnList = _p19._0;
6381		var existingDict = _p19._1;
6382		var killTask = _p19._2;
6383		return A2(
6384			_elm_lang$core$Task$andThen,
6385			function (newProcesses) {
6386				return _elm_lang$core$Task$succeed(
6387					A2(_elm_lang$core$Time$State, newTaggers, newProcesses));
6388			},
6389			A2(
6390				_elm_lang$core$Task$andThen,
6391				function (_p20) {
6392					return A3(_elm_lang$core$Time$spawnHelp, router, spawnList, existingDict);
6393				},
6394				killTask));
6395	});
6396var _elm_lang$core$Time$Every = F2(
6397	function (a, b) {
6398		return {ctor: 'Every', _0: a, _1: b};
6399	});
6400var _elm_lang$core$Time$every = F2(
6401	function (interval, tagger) {
6402		return _elm_lang$core$Time$subscription(
6403			A2(_elm_lang$core$Time$Every, interval, tagger));
6404	});
6405var _elm_lang$core$Time$subMap = F2(
6406	function (f, _p21) {
6407		var _p22 = _p21;
6408		return A2(
6409			_elm_lang$core$Time$Every,
6410			_p22._0,
6411			function (_p23) {
6412				return f(
6413					_p22._1(_p23));
6414			});
6415	});
6416_elm_lang$core$Native_Platform.effectManagers['Time'] = {pkg: 'elm-lang/core', init: _elm_lang$core$Time$init, onEffects: _elm_lang$core$Time$onEffects, onSelfMsg: _elm_lang$core$Time$onSelfMsg, tag: 'sub', subMap: _elm_lang$core$Time$subMap};
6417
6418var _elm_lang$core$Process$kill = _elm_lang$core$Native_Scheduler.kill;
6419var _elm_lang$core$Process$sleep = _elm_lang$core$Native_Scheduler.sleep;
6420var _elm_lang$core$Process$spawn = _elm_lang$core$Native_Scheduler.spawn;
6421
6422var _elm_lang$animation_frame$AnimationFrame$rAF = _elm_lang$animation_frame$Native_AnimationFrame.create(
6423	{ctor: '_Tuple0'});
6424var _elm_lang$animation_frame$AnimationFrame$subscription = _elm_lang$core$Native_Platform.leaf('AnimationFrame');
6425var _elm_lang$animation_frame$AnimationFrame$State = F3(
6426	function (a, b, c) {
6427		return {subs: a, request: b, oldTime: c};
6428	});
6429var _elm_lang$animation_frame$AnimationFrame$init = _elm_lang$core$Task$succeed(
6430	A3(
6431		_elm_lang$animation_frame$AnimationFrame$State,
6432		{ctor: '[]'},
6433		_elm_lang$core$Maybe$Nothing,
6434		0));
6435var _elm_lang$animation_frame$AnimationFrame$onEffects = F3(
6436	function (router, subs, _p0) {
6437		var _p1 = _p0;
6438		var _p5 = _p1.request;
6439		var _p4 = _p1.oldTime;
6440		var _p2 = {ctor: '_Tuple2', _0: _p5, _1: subs};
6441		if (_p2._0.ctor === 'Nothing') {
6442			if (_p2._1.ctor === '[]') {
6443				return _elm_lang$core$Task$succeed(
6444					A3(
6445						_elm_lang$animation_frame$AnimationFrame$State,
6446						{ctor: '[]'},
6447						_elm_lang$core$Maybe$Nothing,
6448						_p4));
6449			} else {
6450				return A2(
6451					_elm_lang$core$Task$andThen,
6452					function (pid) {
6453						return A2(
6454							_elm_lang$core$Task$andThen,
6455							function (time) {
6456								return _elm_lang$core$Task$succeed(
6457									A3(
6458										_elm_lang$animation_frame$AnimationFrame$State,
6459										subs,
6460										_elm_lang$core$Maybe$Just(pid),
6461										time));
6462							},
6463							_elm_lang$core$Time$now);
6464					},
6465					_elm_lang$core$Process$spawn(
6466						A2(
6467							_elm_lang$core$Task$andThen,
6468							_elm_lang$core$Platform$sendToSelf(router),
6469							_elm_lang$animation_frame$AnimationFrame$rAF)));
6470			}
6471		} else {
6472			if (_p2._1.ctor === '[]') {
6473				return A2(
6474					_elm_lang$core$Task$andThen,
6475					function (_p3) {
6476						return _elm_lang$core$Task$succeed(
6477							A3(
6478								_elm_lang$animation_frame$AnimationFrame$State,
6479								{ctor: '[]'},
6480								_elm_lang$core$Maybe$Nothing,
6481								_p4));
6482					},
6483					_elm_lang$core$Process$kill(_p2._0._0));
6484			} else {
6485				return _elm_lang$core$Task$succeed(
6486					A3(_elm_lang$animation_frame$AnimationFrame$State, subs, _p5, _p4));
6487			}
6488		}
6489	});
6490var _elm_lang$animation_frame$AnimationFrame$onSelfMsg = F3(
6491	function (router, newTime, _p6) {
6492		var _p7 = _p6;
6493		var _p10 = _p7.subs;
6494		var diff = newTime - _p7.oldTime;
6495		var send = function (sub) {
6496			var _p8 = sub;
6497			if (_p8.ctor === 'Time') {
6498				return A2(
6499					_elm_lang$core$Platform$sendToApp,
6500					router,
6501					_p8._0(newTime));
6502			} else {
6503				return A2(
6504					_elm_lang$core$Platform$sendToApp,
6505					router,
6506					_p8._0(diff));
6507			}
6508		};
6509		return A2(
6510			_elm_lang$core$Task$andThen,
6511			function (pid) {
6512				return A2(
6513					_elm_lang$core$Task$andThen,
6514					function (_p9) {
6515						return _elm_lang$core$Task$succeed(
6516							A3(
6517								_elm_lang$animation_frame$AnimationFrame$State,
6518								_p10,
6519								_elm_lang$core$Maybe$Just(pid),
6520								newTime));
6521					},
6522					_elm_lang$core$Task$sequence(
6523						A2(_elm_lang$core$List$map, send, _p10)));
6524			},
6525			_elm_lang$core$Process$spawn(
6526				A2(
6527					_elm_lang$core$Task$andThen,
6528					_elm_lang$core$Platform$sendToSelf(router),
6529					_elm_lang$animation_frame$AnimationFrame$rAF)));
6530	});
6531var _elm_lang$animation_frame$AnimationFrame$Diff = function (a) {
6532	return {ctor: 'Diff', _0: a};
6533};
6534var _elm_lang$animation_frame$AnimationFrame$diffs = function (tagger) {
6535	return _elm_lang$animation_frame$AnimationFrame$subscription(
6536		_elm_lang$animation_frame$AnimationFrame$Diff(tagger));
6537};
6538var _elm_lang$animation_frame$AnimationFrame$Time = function (a) {
6539	return {ctor: 'Time', _0: a};
6540};
6541var _elm_lang$animation_frame$AnimationFrame$times = function (tagger) {
6542	return _elm_lang$animation_frame$AnimationFrame$subscription(
6543		_elm_lang$animation_frame$AnimationFrame$Time(tagger));
6544};
6545var _elm_lang$animation_frame$AnimationFrame$subMap = F2(
6546	function (func, sub) {
6547		var _p11 = sub;
6548		if (_p11.ctor === 'Time') {
6549			return _elm_lang$animation_frame$AnimationFrame$Time(
6550				function (_p12) {
6551					return func(
6552						_p11._0(_p12));
6553				});
6554		} else {
6555			return _elm_lang$animation_frame$AnimationFrame$Diff(
6556				function (_p13) {
6557					return func(
6558						_p11._0(_p13));
6559				});
6560		}
6561	});
6562_elm_lang$core$Native_Platform.effectManagers['AnimationFrame'] = {pkg: 'elm-lang/animation-frame', init: _elm_lang$animation_frame$AnimationFrame$init, onEffects: _elm_lang$animation_frame$AnimationFrame$onEffects, onSelfMsg: _elm_lang$animation_frame$AnimationFrame$onSelfMsg, tag: 'sub', subMap: _elm_lang$animation_frame$AnimationFrame$subMap};
6563
6564var _elm_lang$core$Color$fmod = F2(
6565	function (f, n) {
6566		var integer = _elm_lang$core$Basics$floor(f);
6567		return (_elm_lang$core$Basics$toFloat(
6568			A2(_elm_lang$core$Basics_ops['%'], integer, n)) + f) - _elm_lang$core$Basics$toFloat(integer);
6569	});
6570var _elm_lang$core$Color$rgbToHsl = F3(
6571	function (red, green, blue) {
6572		var b = _elm_lang$core$Basics$toFloat(blue) / 255;
6573		var g = _elm_lang$core$Basics$toFloat(green) / 255;
6574		var r = _elm_lang$core$Basics$toFloat(red) / 255;
6575		var cMax = A2(
6576			_elm_lang$core$Basics$max,
6577			A2(_elm_lang$core$Basics$max, r, g),
6578			b);
6579		var cMin = A2(
6580			_elm_lang$core$Basics$min,
6581			A2(_elm_lang$core$Basics$min, r, g),
6582			b);
6583		var c = cMax - cMin;
6584		var lightness = (cMax + cMin) / 2;
6585		var saturation = _elm_lang$core$Native_Utils.eq(lightness, 0) ? 0 : (c / (1 - _elm_lang$core$Basics$abs((2 * lightness) - 1)));
6586		var hue = _elm_lang$core$Basics$degrees(60) * (_elm_lang$core$Native_Utils.eq(cMax, r) ? A2(_elm_lang$core$Color$fmod, (g - b) / c, 6) : (_elm_lang$core$Native_Utils.eq(cMax, g) ? (((b - r) / c) + 2) : (((r - g) / c) + 4)));
6587		return {ctor: '_Tuple3', _0: hue, _1: saturation, _2: lightness};
6588	});
6589var _elm_lang$core$Color$hslToRgb = F3(
6590	function (hue, saturation, lightness) {
6591		var normHue = hue / _elm_lang$core$Basics$degrees(60);
6592		var chroma = (1 - _elm_lang$core$Basics$abs((2 * lightness) - 1)) * saturation;
6593		var x = chroma * (1 - _elm_lang$core$Basics$abs(
6594			A2(_elm_lang$core$Color$fmod, normHue, 2) - 1));
6595		var _p0 = (_elm_lang$core$Native_Utils.cmp(normHue, 0) < 0) ? {ctor: '_Tuple3', _0: 0, _1: 0, _2: 0} : ((_elm_lang$core$Native_Utils.cmp(normHue, 1) < 0) ? {ctor: '_Tuple3', _0: chroma, _1: x, _2: 0} : ((_elm_lang$core$Native_Utils.cmp(normHue, 2) < 0) ? {ctor: '_Tuple3', _0: x, _1: chroma, _2: 0} : ((_elm_lang$core$Native_Utils.cmp(normHue, 3) < 0) ? {ctor: '_Tuple3', _0: 0, _1: chroma, _2: x} : ((_elm_lang$core$Native_Utils.cmp(normHue, 4) < 0) ? {ctor: '_Tuple3', _0: 0, _1: x, _2: chroma} : ((_elm_lang$core$Native_Utils.cmp(normHue, 5) < 0) ? {ctor: '_Tuple3', _0: x, _1: 0, _2: chroma} : ((_elm_lang$core$Native_Utils.cmp(normHue, 6) < 0) ? {ctor: '_Tuple3', _0: chroma, _1: 0, _2: x} : {ctor: '_Tuple3', _0: 0, _1: 0, _2: 0}))))));
6596		var r = _p0._0;
6597		var g = _p0._1;
6598		var b = _p0._2;
6599		var m = lightness - (chroma / 2);
6600		return {ctor: '_Tuple3', _0: r + m, _1: g + m, _2: b + m};
6601	});
6602var _elm_lang$core$Color$toRgb = function (color) {
6603	var _p1 = color;
6604	if (_p1.ctor === 'RGBA') {
6605		return {red: _p1._0, green: _p1._1, blue: _p1._2, alpha: _p1._3};
6606	} else {
6607		var _p2 = A3(_elm_lang$core$Color$hslToRgb, _p1._0, _p1._1, _p1._2);
6608		var r = _p2._0;
6609		var g = _p2._1;
6610		var b = _p2._2;
6611		return {
6612			red: _elm_lang$core$Basics$round(255 * r),
6613			green: _elm_lang$core$Basics$round(255 * g),
6614			blue: _elm_lang$core$Basics$round(255 * b),
6615			alpha: _p1._3
6616		};
6617	}
6618};
6619var _elm_lang$core$Color$toHsl = function (color) {
6620	var _p3 = color;
6621	if (_p3.ctor === 'HSLA') {
6622		return {hue: _p3._0, saturation: _p3._1, lightness: _p3._2, alpha: _p3._3};
6623	} else {
6624		var _p4 = A3(_elm_lang$core$Color$rgbToHsl, _p3._0, _p3._1, _p3._2);
6625		var h = _p4._0;
6626		var s = _p4._1;
6627		var l = _p4._2;
6628		return {hue: h, saturation: s, lightness: l, alpha: _p3._3};
6629	}
6630};
6631var _elm_lang$core$Color$HSLA = F4(
6632	function (a, b, c, d) {
6633		return {ctor: 'HSLA', _0: a, _1: b, _2: c, _3: d};
6634	});
6635var _elm_lang$core$Color$hsla = F4(
6636	function (hue, saturation, lightness, alpha) {
6637		return A4(
6638			_elm_lang$core$Color$HSLA,
6639			hue - _elm_lang$core$Basics$turns(
6640				_elm_lang$core$Basics$toFloat(
6641					_elm_lang$core$Basics$floor(hue / (2 * _elm_lang$core$Basics$pi)))),
6642			saturation,
6643			lightness,
6644			alpha);
6645	});
6646var _elm_lang$core$Color$hsl = F3(
6647	function (hue, saturation, lightness) {
6648		return A4(_elm_lang$core$Color$hsla, hue, saturation, lightness, 1);
6649	});
6650var _elm_lang$core$Color$complement = function (color) {
6651	var _p5 = color;
6652	if (_p5.ctor === 'HSLA') {
6653		return A4(
6654			_elm_lang$core$Color$hsla,
6655			_p5._0 + _elm_lang$core$Basics$degrees(180),
6656			_p5._1,
6657			_p5._2,
6658			_p5._3);
6659	} else {
6660		var _p6 = A3(_elm_lang$core$Color$rgbToHsl, _p5._0, _p5._1, _p5._2);
6661		var h = _p6._0;
6662		var s = _p6._1;
6663		var l = _p6._2;
6664		return A4(
6665			_elm_lang$core$Color$hsla,
6666			h + _elm_lang$core$Basics$degrees(180),
6667			s,
6668			l,
6669			_p5._3);
6670	}
6671};
6672var _elm_lang$core$Color$grayscale = function (p) {
6673	return A4(_elm_lang$core$Color$HSLA, 0, 0, 1 - p, 1);
6674};
6675var _elm_lang$core$Color$greyscale = function (p) {
6676	return A4(_elm_lang$core$Color$HSLA, 0, 0, 1 - p, 1);
6677};
6678var _elm_lang$core$Color$RGBA = F4(
6679	function (a, b, c, d) {
6680		return {ctor: 'RGBA', _0: a, _1: b, _2: c, _3: d};
6681	});
6682var _elm_lang$core$Color$rgba = _elm_lang$core$Color$RGBA;
6683var _elm_lang$core$Color$rgb = F3(
6684	function (r, g, b) {
6685		return A4(_elm_lang$core$Color$RGBA, r, g, b, 1);
6686	});
6687var _elm_lang$core$Color$lightRed = A4(_elm_lang$core$Color$RGBA, 239, 41, 41, 1
6687);
6688var _elm_lang$core$Color$red = A4(_elm_lang$core$Color$RGBA, 204, 0, 0, 1);
6689var _elm_lang$core$Color$darkRed = A4(_elm_lang$core$Color$RGBA, 164, 0, 0, 1);
6690var _elm_lang$core$Color$lightOrange = A4(_elm_lang$core$Color$RGBA, 252, 175, 62, 1);
6691var _elm_lang$core$Color$orange = A4(_elm_lang$core$Color$RGBA, 245, 121, 0, 1);
6692var _elm_lang$core$Color$darkOrange = A4(_elm_lang$core$Color$RGBA, 206, 92, 0, 1);
6693var _elm_lang$core$Color$lightYellow = A4(_elm_lang$core$Color$RGBA, 255, 233, 79, 1);
6694var _elm_lang$core$Color$yellow = A4(_elm_lang$core$Color$RGBA, 237, 212, 0, 1);
6695var _elm_lang$core$Color$darkYellow = A4(_elm_lang$core$Color$RGBA, 196, 160, 0, 1);
6696var _elm_lang$core$Color$lightGreen = A4(_elm_lang$core$Color$RGBA, 138, 226, 52, 1);
6697var _elm_lang$core$Color$green = A4(_elm_lang$core$Color$RGBA, 115, 210, 22, 1);
6698var _elm_lang$core$Color$darkGreen = A4(_elm_lang$core$Color$RGBA, 78, 154, 6, 1);
6699var _elm_lang$core$Color$lightBlue = A4(_elm_lang$core$Color$RGBA, 114, 159, 207, 1);
6700var _elm_lang$core$Color$blue = A4(_elm_lang$core$Color$RGBA, 52, 101, 164, 1);
6701var _elm_lang$core$Color$darkBlue = A4(_elm_lang$core$Color$RGBA, 32, 74, 135, 1);
6702var _elm_lang$core$Color$lightPurple = A4(_elm_lang$core$Color$RGBA, 173, 127, 168, 1);
6703var _elm_lang$core$Color$purple = A4(_elm_lang$core$Color$RGBA, 117, 80, 123, 1);
6704var _elm_lang$core$Color$darkPurple = A4(_elm_lang$core$Color$RGBA, 92, 53, 102, 1);
6705var _elm_lang$core$Color$lightBrown = A4(_elm_lang$core$Color$RGBA, 233, 185, 110, 1);
6706var _elm_lang$core$Color$brown = A4(_elm_lang$core$Color$RGBA, 193, 125, 17, 1);
6707var _elm_lang$core$Color$darkBrown = A4(_elm_lang$core$Color$RGBA, 143, 89, 2, 1);
6708var _elm_lang$core$Color$black = A4(_elm_lang$core$Color$RGBA, 0, 0, 0, 1);
6709var _elm_lang$core$Color$white = A4(_elm_lang$core$Color$RGBA, 255, 255, 255, 1);
6710var _elm_lang$core$Color$lightGrey = A4(_elm_lang$core$Color$RGBA, 238, 238, 236, 1);
6711var _elm_lang$core$Color$grey = A4(_elm_lang$core$Color$RGBA, 211, 215, 207, 1);
6712var _elm_lang$core$Color$darkGrey = A4(_elm_lang$core$Color$RGBA, 186, 189, 182, 1);
6713var _elm_lang$core$Color$lightGray = A4(_elm_lang$core$Color$RGBA, 238, 238, 236, 1);
6714var _elm_lang$core$Color$gray = A4(_elm_lang$core$Color$RGBA, 211, 215, 207, 1);
6715var _elm_lang$core$Color$darkGray = A4(_elm_lang$core$Color$RGBA, 186, 189, 182, 1);
6716var _elm_lang$core$Color$lightCharcoal = A4(_elm_lang$core$Color$RGBA, 136, 138, 133, 1);
6717var _elm_lang$core$Color$charcoal = A4(_elm_lang$core$Color$RGBA, 85, 87, 83, 1);
6718var _elm_lang$core$Color$darkCharcoal = A4(_elm_lang$core$Color$RGBA, 46, 52, 54, 1);
6719var _elm_lang$core$Color$Radial = F5(
6720	function (a, b, c, d, e) {
6721		return {ctor: 'Radial', _0: a, _1: b, _2: c, _3: d, _4: e};
6722	});
6723var _elm_lang$core$Color$radial = _elm_lang$core$Color$Radial;
6724var _elm_lang$core$Color$Linear = F3(
6725	function (a, b, c) {
6726		return {ctor: 'Linear', _0: a, _1: b, _2: c};
6727	});
6728var _elm_lang$core$Color$linear = _elm_lang$core$Color$Linear;
6729
6730//import Result //
6731
6732var _elm_lang$core$Native_Date = function() {
6733
6734function fromString(str)
6735{
6736	var date = new Date(str);
6737	return isNaN(date.getTime())
6738		? _elm_lang$core$Result$Err('Unable to parse \'' + str + '\' as a date. Dates must be in the ISO 8601 format.')
6739		: _elm_lang$core$Result$Ok(date);
6740}
6741
6742var dayTable = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
6743var monthTable =
6744	['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
6745	 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
6746
6747
6748return {
6749	fromString: fromString,
6750	year: function(d) { return d.getFullYear(); },
6751	month: function(d) { return { ctor: monthTable[d.getMonth()] }; },
6752	day: function(d) { return d.getDate(); },
6753	hour: function(d) { return d.getHours(); },
6754	minute: function(d) { return d.getMinutes(); },
6755	second: function(d) { return d.getSeconds(); },
6756	millisecond: function(d) { return d.getMilliseconds(); },
6757	toTime: function(d) { return d.getTime(); },
6758	fromTime: function(t) { return new Date(t); },
6759	dayOfWeek: function(d) { return { ctor: dayTable[d.getDay()] }; }
6760};
6761
6762}();
6763var _elm_lang$core$Date$millisecond = _elm_lang$core$Native_Date.millisecond;
6764var _elm_lang$core$Date$second = _elm_lang$core$Native_Date.second;
6765var _elm_lang$core$Date$minute = _elm_lang$core$Native_Date.minute;
6766var _elm_lang$core$Date$hour = _elm_lang$core$Native_Date.hour;
6767var _elm_lang$core$Date$dayOfWeek = _elm_lang$core$Native_Date.dayOfWeek;
6768var _elm_lang$core$Date$day = _elm_lang$core$Native_Date.day;
6769var _elm_lang$core$Date$month = _elm_lang$core$Native_Date.month;
6770var _elm_lang$core$Date$year = _elm_lang$core$Native_Date.year;
6771var _elm_lang$core$Date$fromTime = _elm_lang$core$Native_Date.fromTime;
6772var _elm_lang$core$Date$toTime = _elm_lang$core$Native_Date.toTime;
6773var _elm_lang$core$Date$fromString = _elm_lang$core$Native_Date.fromString;
6774var _elm_lang$core$Date$now = A2(_elm_lang$core$Task$map, _elm_lang$core$Date$fromTime, _elm_lang$core$Time$now);
6775var _elm_lang$core$Date$Date = {ctor: 'Date'};
6776var _elm_lang$core$Date$Sun = {ctor: 'Sun'};
6777var _elm_lang$core$Date$Sat = {ctor: 'Sat'};
6778var _elm_lang$core$Date$Fri = {ctor: 'Fri'};
6779var _elm_lang$core$Date$Thu = {ctor: 'Thu'};
6780var _elm_lang$core$Date$Wed = {ctor: 'Wed'};
6781var _elm_lang$core$Date$Tue = {ctor: 'Tue'};
6782var _elm_lang$core$Date$Mon = {ctor: 'Mon'};
6783var _elm_lang$core$Date$Dec = {ctor: 'Dec'};
6784var _elm_lang$core$Date$Nov = {ctor: 'Nov'};
6785var _elm_lang$core$Date$Oct = {ctor: 'Oct'};
6786var _elm_lang$core$Date$Sep = {ctor: 'Sep'};
6787var _elm_lang$core$Date$Aug = {ctor: 'Aug'};
6788var _elm_lang$core$Date$Jul = {ctor: 'Jul'};
6789var _elm_lang$core$Date$Jun = {ctor: 'Jun'};
6790var _elm_lang$core$Date$May = {ctor: 'May'};
6791var _elm_lang$core$Date$Apr = {ctor: 'Apr'};
6792var _elm_lang$core$Date$Mar = {ctor: 'Mar'};
6793var _elm_lang$core$Date$Feb = {ctor: 'Feb'};
6794var _elm_lang$core$Date$Jan = {ctor: 'Jan'};
6795
6796//import Maybe, Native.List //
6797
6798var _elm_lang$core$Native_Regex = function() {
6799
6800function escape(str)
6801{
6802	return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
6803}
6804function caseInsensitive(re)
6805{
6806	return new RegExp(re.source, 'gi');
6807}
6808function regex(raw)
6809{
6810	return new RegExp(raw, 'g');
6811}
6812
6813function contains(re, string)
6814{
6815	return string.match(re) !== null;
6816}
6817
6818function find(n, re, str)
6819{
6820	n = n.ctor === 'All' ? Infinity : n._0;
6821	var out = [];
6822	var number = 0;
6823	var string = str;
6824	var lastIndex = re.lastIndex;
6825	var prevLastIndex = -1;
6826	var result;
6827	while (number++ < n && (result = re.exec(string)))
6828	{
6829		if (prevLastIndex === re.lastIndex) break;
6830		var i = result.length - 1;
6831		var subs = new Array(i);
6832		while (i > 0)
6833		{
6834			var submatch = result[i];
6835			subs[--i] = submatch === undefined
6836				? _elm_lang$core$Maybe$Nothing
6837				: _elm_lang$core$Maybe$Just(submatch);
6838		}
6839		out.push({
6840			match: result[0],
6841			submatches: _elm_lang$core$Native_List.fromArray(subs),
6842			index: result.index,
6843			number: number
6844		});
6845		prevLastIndex = re.lastIndex;
6846	}
6847	re.lastIndex = lastIndex;
6848	return _elm_lang$core$Native_List.fromArray(out);
6849}
6850
6851function replace(n, re, replacer, string)
6852{
6853	n = n.ctor === 'All' ? Infinity : n._0;
6854	var count = 0;
6855	function jsReplacer(match)
6856	{
6857		if (count++ >= n)
6858		{
6859			return match;
6860		}
6861		var i = arguments.length - 3;
6862		var submatches = new Array(i);
6863		while (i > 0)
6864		{
6865			var submatch = arguments[i];
6866			submatches[--i] = submatch === undefined
6867				? _elm_lang$core$Maybe$Nothing
6868				: _elm_lang$core$Maybe$Just(submatch);
6869		}
6870		return replacer({
6871			match: match,
6872			submatches: _elm_lang$core$Native_List.fromArray(submatches),
6873			index: arguments[arguments.length - 2],
6874			number: count
6875		});
6876	}
6877	return string.replace(re, jsReplacer);
6878}
6879
6880function split(n, re, str)
6881{
6882	n = n.ctor === 'All' ? Infinity : n._0;
6883	if (n === Infinity)
6884	{
6885		return _elm_lang$core$Native_List.fromArray(str.split(re));
6886	}
6887	var string = str;
6888	var result;
6889	var out = [];
6890	var start = re.lastIndex;
6891	var restoreLastIndex = re.lastIndex;
6892	while (n--)
6893	{
6894		if (!(result = re.exec(string))) break;
6895		out.push(string.slice(start, result.index));
6896		start = re.lastIndex;
6897	}
6898	out.push(string.slice(start));
6899	re.lastIndex = restoreLastIndex;
6900	return _elm_lang$core$Native_List.fromArray(out);
6901}
6902
6903return {
6904	regex: regex,
6905	caseInsensitive: caseInsensitive,
6906	escape: escape,
6907
6908	contains: F2(contains),
6909	find: F3(find),
6910	replace: F4(replace),
6911	split: F3(split)
6912};
6913
6914}();
6915
6916var _elm_lang$core$Regex$split = _elm_lang$core$Native_Regex.split;
6917var _elm_lang$core$Regex$replace = _elm_lang$core$Native_Regex.replace;
6918var _elm_lang$core$Regex$find = _elm_lang$core$Native_Regex.find;
6919var _elm_lang$core$Regex$contains = _elm_lang$core$Native_Regex.contains;
6920var _elm_lang$core$Regex$caseInsensitive = _elm_lang$core$Native_Regex.caseInsensitive;
6921var _elm_lang$core$Regex$regex = _elm_lang$core$Native_Regex.regex;
6922var _elm_lang$core$Regex$escape = _elm_lang$core$Native_Regex.escape;
6923var _elm_lang$core$Regex$Match = F4(
6924	function (a, b, c, d) {
6925		return {match: a, submatches: b, index: c, number: d};
6926	});
6927var _elm_lang$core$Regex$Regex = {ctor: 'Regex'};
6928var _elm_lang$core$Regex$AtMost = function (a) {
6929	return {ctor: 'AtMost', _0: a};
6930};
6931var _elm_lang$core$Regex$All = {ctor: 'All'};
6932
6933var _elm_lang$dom$Native_Dom = function() {
6934
6935var fakeNode = {
6936	addEventListener: function() {},
6937	removeEventListener: function() {}
6938};
6939
6940var onDocument = on(typeof document !== 'undefined' ? document : fakeNode);
6941var onWindow = on(typeof window !== 'undefined' ? window : fakeNode);
6942
6943function on(node)
6944{
6945	return function(eventName, decoder, toTask)
6946	{
6947		return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback) {
6948
6949			function performTask(event)
6950			{
6951				var result = A2(_elm_lang$core$Json_Decode$decodeValue, decoder, event);
6952				if (result.ctor === 'Ok')
6953				{
6954					_elm_lang$core$Native_Scheduler.rawSpawn(toTask(result._0));
6955				}
6956			}
6957
6958			node.addEventListener(eventName, performTask);
6959
6960			return function()
6961			{
6962				node.removeEventListener(eventName, performTask);
6963			};
6964		});
6965	};
6966}
6967
6968var rAF = typeof requestAnimationFrame !== 'undefined'
6969	? requestAnimationFrame
6970	: function(callback) { callback(); };
6971
6972function withNode(id, doStuff)
6973{
6974	return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)
6975	{
6976		rAF(function()
6977		{
6978			var node = document.getElementById(id);
6979			if (node === null)
6980			{
6981				callback(_elm_lang$core$Native_Scheduler.fail({ ctor: 'NotFound', _0: id }));
6982				return;
6983			}
6984			callback(_elm_lang$core$Native_Scheduler.succeed(doStuff(node)));
6985		});
6986	});
6987}
6988
6989
6990// FOCUS
6991
6992function focus(id)
6993{
6994	return withNode(id, function(node) {
6995		node.focus();
6996		return _elm_lang$core$Native_Utils.Tuple0;
6997	});
6998}
6999
7000function blur(id)
7001{
7002	return withNode(id, function(node) {
7003		node.blur();
7004		return _elm_lang$core$Native_Utils.Tuple0;
7005	});
7006}
7007
7008
7009// SCROLLING
7010
7011function getScrollTop(id)
7012{
7013	return withNode(id, function(node) {
7014		return node.scrollTop;
7015	});
7016}
7017
7018function setScrollTop(id, desiredScrollTop)
7019{
7020	return withNode(id, function(node) {
7021		node.scrollTop = desiredScrollTop;
7022		return _elm_lang$core$Native_Utils.Tuple0;
7023	});
7024}
7025
7026function toBottom(id)
7027{
7028	return withNode(id, function(node) {
7029		node.scrollTop = node.scrollHeight;
7030		return _elm_lang$core$Native_Utils.Tuple0;
7031	});
7032}
7033
7034function getScrollLeft(id)
7035{
7036	return withNode(id, function(node) {
7037		return node.scrollLeft;
7038	});
7039}
7040
7041function setScrollLeft(id, desiredScrollLeft)
7042{
7043	return withNode(id, function(node) {
7044		node.scrollLeft = desiredScrollLeft;
7045		return _elm_lang$core$Native_Utils.Tuple0;
7046	});
7047}
7048
7049function toRight(id)
7050{
7051	return withNode(id, function(node) {
7052		node.scrollLeft = node.scrollWidth;
7053		return _elm_lang$core$Native_Utils.Tuple0;
7054	});
7055}
7056
7057
7058// SIZE
7059
7060function width(options, id)
7061{
7062	return withNode(id, function(node) {
7063		switch (options.ctor)
7064		{
7065			case 'Content':
7066				return node.scrollWidth;
7067			case 'VisibleContent':
7068				return node.clientWidth;
7069			case 'VisibleContentWithBorders':
7070				return node.offsetWidth;
7071			case 'VisibleContentWithBordersAndMargins':
7072				var rect = node.getBoundingClientRect();
7073				return rect.right - rect.left;
7074		}
7075	});
7076}
7077
7078function height(options, id)
7079{
7080	return withNode(id, function(node) {
7081		switch (options.ctor)
7082		{
7083			case 'Content':
7084				return node.scrollHeight;
7085			case 'VisibleContent':
7086				return node.clientHeight;
7087			case 'VisibleContentWithBorders':
7088				return node.offsetHeight;
7089			case 'VisibleContentWithBordersAndMargins':
7090				var rect = node.getBoundingClientRect();
7091				return rect.bottom - rect.top;
7092		}
7093	});
7094}
7095
7096return {
7097	onDocument: F3(onDocument),
7098	onWindow: F3(onWindow),
7099
7100	focus: focus,
7101	blur: blur,
7102
7103	getScrollTop: getScrollTop,
7104	setScrollTop: F2(setScrollTop),
7105	getScrollLeft: getScrollLeft,
7106	setScrollLeft: F2(setScrollLeft),
7107	toBottom: toBottom,
7108	toRight: toRight,
7109
7110	height: F2(height),
7111	width: F2(width)
7112};
7113
7114}();
7115
7116var _elm_lang$dom$Dom_LowLevel$onWindow = _elm_lang$dom$Native_Dom.onWindow;
7117var _elm_lang$dom$Dom_LowLevel$onDocument = _elm_lang$dom$Native_Dom.onDocument;
7118
7119var _elm_lang$virtual_dom$VirtualDom_Debug$wrap;
7120var _elm_lang$virtual_dom$VirtualDom_Debug$wrapWithFlags;
7121
7122var _elm_lang$virtual_dom$Native_VirtualDom = function() {
7123
7124var STYLE_KEY = 'STYLE';
7125var EVENT_KEY = 'EVENT';
7126var ATTR_KEY = 'ATTR';
7127var ATTR_NS_KEY = 'ATTR_NS';
7128
7129var localDoc = typeof document !== 'undefined' ? document : {};
7130
7131
7132////////////  VIRTUAL DOM NODES  ////////////
7133
7134
7135function text(string)
7136{
7137	return {
7138		type: 'text',
7139		text: string
7140	};
7141}
7142
7143
7144function node(tag)
7145{
7146	return F2(function(factList, kidList) {
7147		return nodeHelp(tag, factList, kidList);
7148	});
7149}
7150
7151
7152function nodeHelp(tag, factList, kidList)
7153{
7154	var organized = organizeFacts(factList);
7155	var namespace = organized.namespace;
7156	var facts = organized.facts;
7157
7158	var children = [];
7159	var descendantsCount = 0;
7160	while (kidList.ctor !== '[]')
7161	{
7162		var kid = kidList._0;
7163		descendantsCount += (kid.descendantsCount || 0);
7164		children.push(kid);
7165		kidList = kidList._1;
7166	}
7167	descendantsCount += children.length;
7168
7169	return {
7170		type: 'node',
7171		tag: tag,
7172		facts: facts,
7173		children: children,
7174		namespace: namespace,
7175		descendantsCount: descendantsCount
7176	};
7177}
7178
7179
7180function keyedNode(tag, factList, kidList)
7181{
7182	var organized = organizeFacts(factList);
7183	var namespace = organized.namespace;
7184	var facts = organized.facts;
7185
7186	var children = [];
7187	var descendantsCount = 0;
7188	while (kidList.ctor !== '[]')
7189	{
7190		var kid = kidList._0;
7191		descendantsCount += (kid._1.descendantsCount || 0);
7192		children.push(kid);
7193		kidList = kidList._1;
7194	}
7195	descendantsCount += children.length;
7196
7197	return {
7198		type: 'keyed-node',
7199		tag: tag,
7200		facts: facts,
7201		children: children,
7202		namespace: namespace,
7203		descendantsCount: descendantsCount
7204	};
7205}
7206
7207
7208function custom(factList, model, impl)
7209{
7210	var facts = organizeFacts(factList).facts;
7211
7212	return {
7213		type: 'custom',
7214		facts: facts,
7215		model: model,
7216		impl: impl
7217	};
7218}
7219
7220
7221function map(tagger, node)
7222{
7223	return {
7224		type: 'tagger',
7225		tagger: tagger,
7226		node: node,
7227		descendantsCount: 1 + (node.descendantsCount || 0)
7228	};
7229}
7230
7231
7232function thunk(func, args, thunk)
7233{
7234	return {
7235		type: 'thunk',
7236		func: func,
7237		args: args,
7238		thunk: thunk,
7239		node: undefined
7240	};
7241}
7242
7243function lazy(fn, a)
7244{
7245	return thunk(fn, [a], function() {
7246		return fn(a);
7247	});
7248}
7249
7250function lazy2(fn, a, b)
7251{
7252	return thunk(fn, [a,b], function() {
7253		return A2(fn, a, b);
7254	});
7255}
7256
7257function lazy3(fn, a, b, c)
7258{
7259	return thunk(fn, [a,b,c], function() {
7260		return A3(fn, a, b, c);
7261	});
7262}
7263
7264
7265
7266// FACTS
7267
7268
7269function organizeFacts(factList)
7270{
7271	var namespace, facts = {};
7272
7273	while (factList.ctor !== '[]')
7274	{
7275		var entry = factList._0;
7276		var key = entry.key;
7277
7278		if (key === ATTR_KEY || key === ATTR_NS_KEY || key === EVENT_KEY)
7279		{
7280			var subFacts = facts[key] || {};
7281			subFacts[entry.realKey] = entry.value;
7282			facts[key] = subFacts;
7283		}
7284		else if (key === STYLE_KEY)
7285		{
7286			var styles = facts[key] || {};
7287			var styleList = entry.value;
7288			while (styleList.ctor !== '[]')
7289			{
7290				var style = styleList._0;
7291				styles[style._0] = style._1;
7292				styleList = styleList._1;
7293			}
7294			facts[key] = styles;
7295		}
7296		else if (key === 'namespace')
7297		{
7298			namespace = entry.value;
7299		}
7300		else if (key === 'className')
7301		{
7302			var classes = facts[key];
7303			facts[key] = typeof classes === 'undefined'
7304				? entry.value
7305				: classes + ' ' + entry.value;
7306		}
7307 		else
7308		{
7309			facts[key] = entry.value;
7310		}
7311		factList = factList._1;
7312	}
7313
7314	return {
7315		facts: facts,
7316		namespace: namespace
7317	};
7318}
7319
7320
7321
7322////////////  PROPERTIES AND ATTRIBUTES  ////////////
7323
7324
7325function style(value)
7326{
7327	return {
7328		key: STYLE_KEY,
7329		value: value
7330	};
7331}
7332
7333
7334function property(key, value)
7335{
7336	return {
7337		key: key,
7338		value: value
7339	};
7340}
7341
7342
7343function attribute(key, value)
7344{
7345	return {
7346		key: ATTR_KEY,
7347		realKey: key,
7348		value: value
7349	};
7350}
7351
7352
7353function attributeNS(namespace, key, value)
7354{
7355	return {
7356		key: ATTR_NS_KEY,
7357		realKey: key,
7358		value: {
7359			value: value,
7360			namespace: namespace
7361		}
7362	};
7363}
7364
7365
7366function on(name, options, decoder)
7367{
7368	return {
7369		key: EVENT_KEY,
7370		realKey: name,
7371		value: {
7372			options: options,
7373			decoder: decoder
7374		}
7375	};
7376}
7377
7378
7379function equalEvents(a, b)
7380{
7381	if (a.options !== b.options)
7382	{
7383		if (a.options.stopPropagation !== b.options.stopPropagation || a.options.preventDefault !== b.options.preventDefault)
7384		{
7385			return false;
7386		}
7387	}
7388	return _elm_lang$core$Native_Json.equality(a.decoder, b.decoder);
7389}
7390
7391
7392function mapProperty(func, property)
7393{
7394	if (property.key !== EVENT_KEY)
7395	{
7396		return property;
7397	}
7398	return on(
7399		property.realKey,
7400		property.value.options,
7401		A2(_elm_lang$core$Json_Decode$map, func, property.value.decoder)
7402	);
7403}
7404
7405
7406////////////  RENDER  ////////////
7407
7408
7409function render(vNode, eventNode)
7410{
7411	switch (vNode.type)
7412	{
7413		case 'thunk':
7414			if (!vNode.node)
7415			{
7416				vNode.node = vNode.thunk();
7417			}
7418			return render(vNode.node, eventNode);
7419
7420		case 'tagger':
7421			var subNode = vNode.node;
7422			var tagger = vNode.tagger;
7423
7424			while (subNode.type === 'tagger')
7425			{
7426				typeof tagger !== 'object'
7427					? tagger = [tagger, subNode.tagger]
7428					: tagger.push(subNode.tagger);
7429
7430				subNode = subNode.node;
7431			}
7432
7433			var subEventRoot = { tagger: tagger, parent: eventNode };
7434			var domNode = render(subNode, subEventRoot);
7435			domNode.elm_event_node_ref = subEventRoot;
7436			return domNode;
7437
7438		case 'text':
7439			return localDoc.createTextNode(vNode.text);
7440
7441		case 'node':
7442			var domNode = vNode.namespace
7443				? localDoc.createElementNS(vNode.namespace, vNode.tag)
7444				: localDoc.createElement(vNode.tag);
7445
7446			applyFacts(domNode, eventNode, vNode.facts);
7447
7448			var children = vNode.children;
7449
7450			for (var i = 0; i < children.length; i++)
7451			{
7452				domNode.appendChild(render(children[i], eventNode));
7453			}
7454
7455			return domNode;
7456
7457		case 'keyed-node':
7458			var domNode = vNode.namespace
7459				? localDoc.createElementNS(vNode.namespace, vNode.tag)
7460				: localDoc.createElement(vNode.tag);
7461
7462			applyFacts(domNode, eventNode, vNode.facts);
7463
7464			var children = vNode.children;
7465
7466			for (var i = 0; i < children.length; i++)
7467			{
7468				domNode.appendChild(render(children[i]._1, eventNode));
7469			}
7470
7471			return domNode;
7472
7473		case 'custom':
7474			var domNode = vNode.impl.render(vNode.model);
7475			applyFacts(domNode, eventNode, vNode.facts);
7476			return domNode;
7477	}
7478}
7479
7480
7481
7482////////////  APPLY FACTS  ////////////
7483
7484
7485function applyFacts(domNode, eventNode, facts)
7486{
7487	for (var key in facts)
7488	{
7489		var value = facts[key];
7490
7491		switch (key)
7492		{
7493			case STYLE_KEY:
7494				applyStyles(domNode, value);
7495				break;
7496
7497			case EVENT_KEY:
7498				applyEvents(domNode, eventNode, value);
7499				break;
7500
7501			case ATTR_KEY:
7502				applyAttrs(domNode, value);
7503				break;
7504
7505			case ATTR_NS_KEY:
7506				applyAttrsNS(domNode, value);
7507				break;
7508
7509			case 'value':
7510				if (domNode[key] !== value)
7511				{
7512					domNode[key] = value;
7513				}
7514				break;
7515
7516			default:
7517				domNode[key] = value;
7518				break;
7519		}
7520	}
7521}
7522
7523function applyStyles(domNode, styles)
7524{
7525	var domNodeStyle = domNode.style;
7526
7527	for (var key in styles)
7528	{
7529		domNodeStyle[key] = styles[key];
7530	}
7531}
7532
7533function applyEvents(domNode, eventNode, events)
7534{
7535	var allHandlers = domNode.elm_handlers || {};
7536
7537	for (var key in events)
7538	{
7539		var handler = allHandlers[key];
7540		var value = events[key];
7541
7542		if (typeof value === 'undefined')
7543		{
7544			domNode.removeEventListener(key, handler);
7545			allHandlers[key] = undefined;
7546		}
7547		else if (typeof handler === 'undefined')
7548		{
7549			var handler = makeEventHandler(eventNode, value);
7550			domNode.addEventListener(key, handler);
7551			allHandlers[key] = handler;
7552		}
7553		else
7554		{
7555			handler.info = value;
7556		}
7557	}
7558
7559	domNode.elm_handlers = allHandlers;
7560}
7561
7562function makeEventHandler(eventNode, info)
7563{
7564	function eventHandler(event)
7565	{
7566		var info = eventHandler.info;
7567
7568		var value = A2(_elm_lang$core$Native_Json.run, info.decoder, event);
7569
7570		if (value.ctor === 'Ok')
7571		{
7572			var options = info.options;
7573			if (options.stopPropagation)
7574			{
7575				event.stopPropagation();
7576			}
7577			if (options.preventDefault)
7578			{
7579				event.preventDefault();
7580			}
7581
7582			var message = value._0;
7583
7584			var currentEventNode = eventNode;
7585			while (currentEventNode)
7586			{
7587				var tagger = currentEventNode.tagger;
7588				if (typeof tagger === 'function')
7589				{
7590					message = tagger(message);
7591				}
7592				else
7593				{
7594					for (var i = tagger.length; i--; )
7595					{
7596						message = tagger[i](message);
7597					}
7598				}
7599				currentEventNode = currentEventNode.parent;
7600			}
7601		}
7602	};
7603
7604	eventHandler.info = info;
7605
7606	return eventHandler;
7607}
7608
7609function applyAttrs(domNode, attrs)
7610{
7611	for (var key in attrs)
7612	{
7613		var value = attrs[key];
7614		if (typeof value === 'undefined')
7615		{
7616			domNode.removeAttribute(key);
7617		}
7618		else
7619		{
7620			domNode.setAttribute(key, value);
7621		}
7622	}
7623}
7624
7625function applyAttrsNS(domNode, nsAttrs)
7626{
7627	for (var key in nsAttrs)
7628	{
7629		var pair = nsAttrs[key];
7630		var namespace = pair.namespace;
7631		var value = pair.value;
7632
7633		if (typeof value === 'undefined')
7634		{
7635			domNode.removeAttributeNS(namespace, key);
7636		}
7637		else
7638		{
7639			domNode.setAttributeNS(namespace, key, value);
7640		}
7641	}
7642}
7643
7644
7645
7646////////////  DIFF  ////////////
7647
7648
7649function diff(a, b)
7650{
7651	var patches = [];
7652	diffHelp(a, b, patches, 0);
7653	return patches;
7654}
7655
7656
7657function makePatch(type, index, data)
7658{
7659	return {
7660		index: index,
7661		type: type,
7662		data: data,
7663		domNode: undefined,
7664		eventNode: undefined
7665	};
7666}
7667
7668
7669function diffHelp(a, b, patches, index)
7670{
7671	if (a === b)
7672	{
7673		return;
7674	}
7675
7676	var aType = a.type;
7677	var bType = b.type;
7678
7679	// Bail if you run into different types of nodes. Implies that the
7680	// structure has changed significantly and it's not worth a diff.
7681	if (aType !== bType)
7682	{
7683		patches.push(makePatch('p-redraw', index, b));
7684		return;
7685	}
7686
7687	// Now we know that both nodes are the same type.
7688	switch (bType)
7689	{
7690		case 'thunk':
7691			var aArgs = a.args;
7692			var bArgs = b.args;
7693			var i = aArgs.length;
7694			var same = a.func === b.func && i === bArgs.length;
7695			while (same && i--)
7696			{
7697				same = aArgs[i] === bArgs[i];
7698			}
7699			if (same)
7700			{
7701				b.node = a.node;
7702				return;
7703			}
7704			b.node = b.thunk();
7705			var subPatches = [];
7706			diffHelp(a.node, b.node, subPatches, 0);
7707			if (subPatches.length > 0)
7708			{
7709				patches.push(makePatch('p-thunk', index, subPatches));
7710			}
7711			return;
7712
7713		case 'tagger':
7714			// gather nested taggers
7715			var aTaggers = a.tagger;
7716			var bTaggers = b.tagger;
7717			var nesting = false;
7718
7719			var aSubNode = a.node;
7720			while (aSubNode.type === 'tagger')
7721			{
7722				nesting = true;
7723
7724				typeof aTaggers !== 'object'
7725					? aTaggers = [aTaggers, aSubNode.tagger]
7726					: aTaggers.push(aSubNode.tagger);
7727
7728				aSubNode = aSubNode.node;
7729			}
7730
7731			var bSubNode = b.node;
7732			while (bSubNode.type === 'tagger')
7733			{
7734				nesting = true;
7735
7736				typeof bTaggers !== 'object'
7737					? bTaggers = [bTaggers, bSubNode.tagger]
7738					: bTaggers.push(bSubNode.tagger);
7739
7740				bSubNode = bSubNode.node;
7741			}
7742
7743			// Just bail if different numbers of taggers. This implies the
7744			// structure of the virtual DOM has changed.
7745			if (nesting && aTaggers.length !== bTaggers.length)
7746			{
7747				patches.push(makePatch('p-redraw', index, b));
7748				return;
7749			}
7750
7751			// check if taggers are "the same"
7752			if (nesting ? !pairwiseRefEqual(aTaggers, bTaggers) : aTaggers !== bTaggers)
7753			{
7754				patches.push(makePatch('p-tagger', index, bTaggers));
7755			}
7756
7757			// diff everything below the taggers
7758			diffHelp(aSubNode, bSubNode, patches, index + 1);
7759			return;
7760
7761		case 'text':
7762			if (a.text !== b.text)
7763			{
7764				patches.push(makePatch('p-text', index, b.text));
7765				return;
7766			}
7767
7768			return;
7769
7770		case 'node':
7771			// Bail if obvious indicators have changed. Implies more serious
7772			// structural changes such that it's not worth it to diff.
7773			if (a.tag !== b.tag || a.namespace !== b.namespace)
7774			{
7775				patches.push(makePatch('p-redraw', index, b));
7776				return;
7777			}
7778
7779			var factsDiff = diffFacts(a.facts, b.facts);
7780
7781			if (typeof factsDiff !== 'undefined')
7782			{
7783				patches.push(makePatch('p-facts', index, factsDiff));
7784			}
7785
7786			diffChildren(a, b, patches, index);
7787			return;
7788
7789		case 'keyed-node':
7790			// Bail if obvious indicators have changed. Implies more serious
7791			// structural changes such that it's not worth it to diff.
7792			if (a.tag !== b.tag || a.namespace !== b.namespace)
7793			{
7794				patches.push(makePatch('p-redraw', index, b));
7795				return;
7796			}
7797
7798			var factsDiff = diffFacts(a.facts, b.facts);
7799
7800			if (typeof factsDiff !== 'undefined')
7801			{
7802				patches.push(makePatch('p-facts', index, factsDiff));
7803			}
7804
7805			diffKeyedChildren(a, b, patches, index);
7806			return;
7807
7808		case 'custom':
7809			if (a.impl !== b.impl)
7810			{
7811				patches.push(makePatch('p-redraw', index, b));
7812				return;
7813			}
7814
7815			var factsDiff = diffFacts(a.facts, b.facts);
7816			if (typeof factsDiff !== 'undefined')
7817			{
7818				patches.push(makePatch('p-facts', index, factsDiff));
7819			}
7820
7821			var patch = b.impl.diff(a,b);
7822			if (patch)
7823			{
7824				patches.push(makePatch('p-custom', index, patch));
7825				return;
7826			}
7827
7828			return;
7829	}
7830}
7831
7832
7833// assumes the incoming arrays are the same length
7834function pairwiseRefEqual(as, bs)
7835{
7836	for (var i = 0; i < as.length; i++)
7837	{
7838		if (as[i] !== bs[i])
7839		{
7840			return false;
7841		}
7842	}
7843
7844	return true;
7845}
7846
7847
7848// TODO Instead of creating a new diff object, it's possible to just test if
7849// there *is* a diff. During the actual patch, do the diff again and make the
7850// modifications directly. This way, there's no new allocations. Worth it?
7851function diffFacts(a, b, category)
7852{
7853	var diff;
7854
7855	// look for changes and removals
7856	for (var aKey in a)
7857	{
7858		if (aKey === STYLE_KEY || aKey === EVENT_KEY || aKey === ATTR_KEY || aKey === ATTR_NS_KEY)
7859		{
7860			var subDiff = diffFacts(a[aKey], b[aKey] || {}, aKey);
7861			if (subDiff)
7862			{
7863				diff = diff || {};
7864				diff[aKey] = subDiff;
7865			}
7866			continue;
7867		}
7868
7869		// remove if not in the new facts
7870		if (!(aKey in b))
7871		{
7872			diff = diff || {};
7873			diff[aKey] =
7874				(typeof category === 'undefined')
7875					? (typeof a[aKey] === 'string' ? '' : null)
7876					:
7877				(category === STYLE_KEY)
7878					? ''
7879					:
7880				(category === EVENT_KEY || category === ATTR_KEY)
7881					? undefined
7882					:
7883				{ namespace: a[aKey].namespace, value: undefined };
7884
7885			continue;
7886		}
7887
7888		var aValue = a[aKey];
7889		var bValue = b[aKey];
7890
7891		// reference equal, so don't worry about it
7892		if (aValue === bValue && aKey !== 'value'
7893			|| category === EVENT_KEY && equalEvents(aValue, bValue))
7894		{
7895			continue;
7896		}
7897
7898		diff = diff || {};
7899		diff[aKey] = bValue;
7900	}
7901
7902	// add new stuff
7903	for (var bKey in b)
7904	{
7905		if (!(bKey in a))
7906		{
7907			diff = diff || {};
7908			diff[bKey] = b[bKey];
7909		}
7910	}
7911
7912	return diff;
7913}
7914
7915
7916function diffChildren(aParent, bParent, patches, rootIndex)
7917{
7918	var aChildren = aParent.children;
7919	var bChildren = bParent.children;
7920
7921	var aLen = aChildren.length;
7922	var bLen = bChildren.length;
7923
7924	// FIGURE OUT IF THERE ARE INSERTS OR REMOVALS
7925
7926	if (aLen > bLen)
7927	{
7928		patches.push(makePatch('p-remove-last', rootIndex, aLen - bLen));
7929	}
7930	else if (aLen < bLen)
7931	{
7932		patches.push(makePatch('p-append', rootIndex, bChildren.slice(aLen)));
7933	}
7934
7935	// PAIRWISE DIFF EVERYTHING ELSE
7936
7937	var index = rootIndex;
7938	var minLen = aLen < bLen ? aLen : bLen;
7939	for (var i = 0; i < minLen; i++)
7940	{
7941		index++;
7942		var aChild = aChildren[i];
7943		diffHelp(aChild, bChildren[i], patches, index);
7944		index += aChild.descendantsCount || 0;
7945	}
7946}
7947
7948
7949
7950////////////  KEYED DIFF  ////////////
7951
7952
7953function diffKeyedChildren(aParent, bParent, patches, rootIndex)
7954{
7955	var localPatches = [];
7956
7957	var changes = {}; // Dict String Entry
7958	var inserts = []; // Array { index : Int, entry : Entry }
7959	// type Entry = { tag : String, vnode : VNode, index : Int, data : _ }
7960
7961	var aChildren = aParent.children;
7962	var bChildren = bParent.children;
7963	var aLen = aChildren.length;
7964	var bLen = bChildren.length;
7965	var aIndex = 0;
7966	var bIndex = 0;
7967
7968	var index = rootIndex;
7969
7970	while (aIndex < aLen && bIndex < bLen)
7971	{
7972		var a = aChildren[aIndex];
7973		var b = bChildren[bIndex];
7974
7975		var aKey = a._0;
7976		var bKey = b._0;
7977		var aNode = a._1;
7978		var bNode = b._1;
7979
7980		// check if keys match
7981
7982		if (aKey === bKey)
7983		{
7984			index++;
7985			diffHelp(aNode, bNode, localPatches, index);
7986			index += aNode.descendantsCount || 0;
7987
7988			aIndex++;
7989			bIndex++;
7990			continue;
7991		}
7992
7993		// look ahead 1 to detect insertions and removals.
7994
7995		var aLookAhead = aIndex + 1 < aLen;
7996		var bLookAhead = bIndex + 1 < bLen;
7997
7998		if (aLookAhead)
7999		{
8000			var aNext = aChildren[aIndex + 1];
8001			var aNextKey = aNext._0;
8002			var aNextNode = aNext._1;
8003			var oldMatch = bKey === aNextKey;
8004		}
8005
8006		if (bLookAhead)
8007		{
8008			var bNext = bChildren[bIndex + 1];
8009			var bNextKey = bNext._0;
8010			var bNextNode = bNext._1;
8011			var newMatch = aKey === bNextKey;
8012		}
8013
8014
8015		// swap a and b
8016		if (aLookAhead && bLookAhead && newMatch && oldMatch)
8017		{
8018			index++;
8019			diffHelp(aNode, bNextNode, localPatches, index);
8020			insertNode(changes, localPatches, aKey, bNode, bIndex, inserts);
8021			index += aNode.descendantsCount || 0;
8022
8023			index++;
8024			removeNode(changes, localPatches, aKey, aNextNode, index);
8025			index += aNextNode.descendantsCount || 0;
8026
8027			aIndex += 2;
8028			bIndex += 2;
8029			continue;
8030		}
8031
8032		// insert b
8033		if (bLookAhead && newMatch)
8034		{
8035			index++;
8036			insertNode(changes, localPatches, bKey, bNode, bIndex, inserts);
8037			diffHelp(aNode, bNextNode, localPatches, index);
8038			index += aNode.descendantsCount || 0;
8039
8040			aIndex += 1;
8041			bIndex += 2;
8042			continue;
8043		}
8044
8045		// remove a
8046		if (aLookAhead && oldMatch)
8047		{
8048			index++;
8049			removeNode(changes, localPatches, aKey, aNode, index);
8050			index += aNode.descendantsCount || 0;
8051
8052			index++;
8053			diffHelp(aNextNode, bNode, localPatches, index);
8054			index += aNextNode.descendantsCount || 0;
8055
8056			aIndex += 2;
8057			bIndex += 1;
8058			continue;
8059		}
8060
8061		// remove a, insert b
8062		if (aLookAhead && bL
8062ookAhead && aNextKey === bNextKey)
8063		{
8064			index++;
8065			removeNode(changes, localPatches, aKey, aNode, index);
8066			insertNode(changes, localPatches, bKey, bNode, bIndex, inserts);
8067			index += aNode.descendantsCount || 0;
8068
8069			index++;
8070			diffHelp(aNextNode, bNextNode, localPatches, index);
8071			index += aNextNode.descendantsCount || 0;
8072
8073			aIndex += 2;
8074			bIndex += 2;
8075			continue;
8076		}
8077
8078		break;
8079	}
8080
8081	// eat up any remaining nodes with removeNode and insertNode
8082
8083	while (aIndex < aLen)
8084	{
8085		index++;
8086		var a = aChildren[aIndex];
8087		var aNode = a._1;
8088		removeNode(changes, localPatches, a._0, aNode, index);
8089		index += aNode.descendantsCount || 0;
8090		aIndex++;
8091	}
8092
8093	var endInserts;
8094	while (bIndex < bLen)
8095	{
8096		endInserts = endInserts || [];
8097		var b = bChildren[bIndex];
8098		insertNode(changes, localPatches, b._0, b._1, undefined, endInserts);
8099		bIndex++;
8100	}
8101
8102	if (localPatches.length > 0 || inserts.length > 0 || typeof endInserts !== 'undefined')
8103	{
8104		patches.push(makePatch('p-reorder', rootIndex, {
8105			patches: localPatches,
8106			inserts: inserts,
8107			endInserts: endInserts
8108		}));
8109	}
8110}
8111
8112
8113
8114////////////  CHANGES FROM KEYED DIFF  ////////////
8115
8116
8117var POSTFIX = '_elmW6BL';
8118
8119
8120function insertNode(changes, localPatches, key, vnode, bIndex, inserts)
8121{
8122	var entry = changes[key];
8123
8124	// never seen this key before
8125	if (typeof entry === 'undefined')
8126	{
8127		entry = {
8128			tag: 'insert',
8129			vnode: vnode,
8130			index: bIndex,
8131			data: undefined
8132		};
8133
8134		inserts.push({ index: bIndex, entry: entry });
8135		changes[key] = entry;
8136
8137		return;
8138	}
8139
8140	// this key was removed earlier, a match!
8141	if (entry.tag === 'remove')
8142	{
8143		inserts.push({ index: bIndex, entry: entry });
8144
8145		entry.tag = 'move';
8146		var subPatches = [];
8147		diffHelp(entry.vnode, vnode, subPatches, entry.index);
8148		entry.index = bIndex;
8149		entry.data.data = {
8150			patches: subPatches,
8151			entry: entry
8152		};
8153
8154		return;
8155	}
8156
8157	// this key has already been inserted or moved, a duplicate!
8158	insertNode(changes, localPatches, key + POSTFIX, vnode, bIndex, inserts);
8159}
8160
8161
8162function removeNode(changes, localPatches, key, vnode, index)
8163{
8164	var entry = changes[key];
8165
8166	// never seen this key before
8167	if (typeof entry === 'undefined')
8168	{
8169		var patch = makePatch('p-remove', index, undefined);
8170		localPatches.push(patch);
8171
8172		changes[key] = {
8173			tag: 'remove',
8174			vnode: vnode,
8175			index: index,
8176			data: patch
8177		};
8178
8179		return;
8180	}
8181
8182	// this key was inserted earlier, a match!
8183	if (entry.tag === 'insert')
8184	{
8185		entry.tag = 'move';
8186		var subPatches = [];
8187		diffHelp(vnode, entry.vnode, subPatches, index);
8188
8189		var patch = makePatch('p-remove', index, {
8190			patches: subPatches,
8191			entry: entry
8192		});
8193		localPatches.push(patch);
8194
8195		return;
8196	}
8197
8198	// this key has already been removed or moved, a duplicate!
8199	removeNode(changes, localPatches, key + POSTFIX, vnode, index);
8200}
8201
8202
8203
8204////////////  ADD DOM NODES  ////////////
8205//
8206// Each DOM node has an "index" assigned in order of traversal. It is important
8207// to minimize our crawl over the actual DOM, so these indexes (along with the
8208// descendantsCount of virtual nodes) let us skip touching entire subtrees of
8209// the DOM if we know there are no patches there.
8210
8211
8212function addDomNodes(domNode, vNode, patches, eventNode)
8213{
8214	addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.descendantsCount, eventNode);
8215}
8216
8217
8218// assumes `patches` is non-empty and indexes increase monotonically.
8219function addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode)
8220{
8221	var patch = patches[i];
8222	var index = patch.index;
8223
8224	while (index === low)
8225	{
8226		var patchType = patch.type;
8227
8228		if (patchType === 'p-thunk')
8229		{
8230			addDomNodes(domNode, vNode.node, patch.data, eventNode);
8231		}
8232		else if (patchType === 'p-reorder')
8233		{
8234			patch.domNode = domNode;
8235			patch.eventNode = eventNode;
8236
8237			var subPatches = patch.data.patches;
8238			if (subPatches.length > 0)
8239			{
8240				addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);
8241			}
8242		}
8243		else if (patchType === 'p-remove')
8244		{
8245			patch.domNode = domNode;
8246			patch.eventNode = eventNode;
8247
8248			var data = patch.data;
8249			if (typeof data !== 'undefined')
8250			{
8251				data.entry.data = domNode;
8252				var subPatches = data.patches;
8253				if (subPatches.length > 0)
8254				{
8255					addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);
8256				}
8257			}
8258		}
8259		else
8260		{
8261			patch.domNode = domNode;
8262			patch.eventNode = eventNode;
8263		}
8264
8265		i++;
8266
8267		if (!(patch = patches[i]) || (index = patch.index) > high)
8268		{
8269			return i;
8270		}
8271	}
8272
8273	switch (vNode.type)
8274	{
8275		case 'tagger':
8276			var subNode = vNode.node;
8277
8278			while (subNode.type === "tagger")
8279			{
8280				subNode = subNode.node;
8281			}
8282
8283			return addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, domNode.elm_event_node_ref);
8284
8285		case 'node':
8286			var vChildren = vNode.children;
8287			var childNodes = domNode.childNodes;
8288			for (var j = 0; j < vChildren.length; j++)
8289			{
8290				low++;
8291				var vChild = vChildren[j];
8292				var nextLow = low + (vChild.descendantsCount || 0);
8293				if (low <= index && index <= nextLow)
8294				{
8295					i = addDomNodesHelp(childNodes[j], vChild, patches, i, low, nextLow, eventNode);
8296					if (!(patch = patches[i]) || (index = patch.index) > high)
8297					{
8298						return i;
8299					}
8300				}
8301				low = nextLow;
8302			}
8303			return i;
8304
8305		case 'keyed-node':
8306			var vChildren = vNode.children;
8307			var childNodes = domNode.childNodes;
8308			for (var j = 0; j < vChildren.length; j++)
8309			{
8310				low++;
8311				var vChild = vChildren[j]._1;
8312				var nextLow = low + (vChild.descendantsCount || 0);
8313				if (low <= index && index <= nextLow)
8314				{
8315					i = addDomNodesHelp(childNodes[j], vChild, patches, i, low, nextLow, eventNode);
8316					if (!(patch = patches[i]) || (index = patch.index) > high)
8317					{
8318						return i;
8319					}
8320				}
8321				low = nextLow;
8322			}
8323			return i;
8324
8325		case 'text':
8326		case 'thunk':
8327			throw new Error('should never traverse `text` or `thunk` nodes like this');
8328	}
8329}
8330
8331
8332
8333////////////  APPLY PATCHES  ////////////
8334
8335
8336function applyPatches(rootDomNode, oldVirtualNode, patches, eventNode)
8337{
8338	if (patches.length === 0)
8339	{
8340		return rootDomNode;
8341	}
8342
8343	addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode);
8344	return applyPatchesHelp(rootDomNode, patches);
8345}
8346
8347function applyPatchesHelp(rootDomNode, patches)
8348{
8349	for (var i = 0; i < patches.length; i++)
8350	{
8351		var patch = patches[i];
8352		var localDomNode = patch.domNode
8353		var newNode = applyPatch(localDomNode, patch);
8354		if (localDomNode === rootDomNode)
8355		{
8356			rootDomNode = newNode;
8357		}
8358	}
8359	return rootDomNode;
8360}
8361
8362function applyPatch(domNode, patch)
8363{
8364	switch (patch.type)
8365	{
8366		case 'p-redraw':
8367			return applyPatchRedraw(domNode, patch.data, patch.eventNode);
8368
8369		case 'p-facts':
8370			applyFacts(domNode, patch.eventNode, patch.data);
8371			return domNode;
8372
8373		case 'p-text':
8374			domNode.replaceData(0, domNode.length, patch.data);
8375			return domNode;
8376
8377		case 'p-thunk':
8378			return applyPatchesHelp(domNode, patch.data);
8379
8380		case 'p-tagger':
8381			if (typeof domNode.elm_event_node_ref !== 'undefined')
8382			{
8383				domNode.elm_event_node_ref.tagger = patch.data;
8384			}
8385			else
8386			{
8387				domNode.elm_event_node_ref = { tagger: patch.data, parent: patch.eventNode };
8388			}
8389			return domNode;
8390
8391		case 'p-remove-last':
8392			var i = patch.data;
8393			while (i--)
8394			{
8395				domNode.removeChild(domNode.lastChild);
8396			}
8397			return domNode;
8398
8399		case 'p-append':
8400			var newNodes = patch.data;
8401			for (var i = 0; i < newNodes.length; i++)
8402			{
8403				domNode.appendChild(render(newNodes[i], patch.eventNode));
8404			}
8405			return domNode;
8406
8407		case 'p-remove':
8408			var data = patch.data;
8409			if (typeof data === 'undefined')
8410			{
8411				domNode.parentNode.removeChild(domNode);
8412				return domNode;
8413			}
8414			var entry = data.entry;
8415			if (typeof entry.index !== 'undefined')
8416			{
8417				domNode.parentNode.removeChild(domNode);
8418			}
8419			entry.data = applyPatchesHelp(domNode, data.patches);
8420			return domNode;
8421
8422		case 'p-reorder':
8423			return applyPatchReorder(domNode, patch);
8424
8425		case 'p-custom':
8426			var impl = patch.data;
8427			return impl.applyPatch(domNode, impl.data);
8428
8429		default:
8430			throw new Error('Ran into an unknown patch!');
8431	}
8432}
8433
8434
8435function applyPatchRedraw(domNode, vNode, eventNode)
8436{
8437	var parentNode = domNode.parentNode;
8438	var newNode = render(vNode, eventNode);
8439
8440	if (typeof newNode.elm_event_node_ref === 'undefined')
8441	{
8442		newNode.elm_event_node_ref = domNode.elm_event_node_ref;
8443	}
8444
8445	if (parentNode && newNode !== domNode)
8446	{
8447		parentNode.replaceChild(newNode, domNode);
8448	}
8449	return newNode;
8450}
8451
8452
8453function applyPatchReorder(domNode, patch)
8454{
8455	var data = patch.data;
8456
8457	// remove end inserts
8458	var frag = applyPatchReorderEndInsertsHelp(data.endInserts, patch);
8459
8460	// removals
8461	domNode = applyPatchesHelp(domNode, data.patches);
8462
8463	// inserts
8464	var inserts = data.inserts;
8465	for (var i = 0; i < inserts.length; i++)
8466	{
8467		var insert = inserts[i];
8468		var entry = insert.entry;
8469		var node = entry.tag === 'move'
8470			? entry.data
8471			: render(entry.vnode, patch.eventNode);
8472		domNode.insertBefore(node, domNode.childNodes[insert.index]);
8473	}
8474
8475	// add end inserts
8476	if (typeof frag !== 'undefined')
8477	{
8478		domNode.appendChild(frag);
8479	}
8480
8481	return domNode;
8482}
8483
8484
8485function applyPatchReorderEndInsertsHelp(endInserts, patch)
8486{
8487	if (typeof endInserts === 'undefined')
8488	{
8489		return;
8490	}
8491
8492	var frag = localDoc.createDocumentFragment();
8493	for (var i = 0; i < endInserts.length; i++)
8494	{
8495		var insert = endInserts[i];
8496		var entry = insert.entry;
8497		frag.appendChild(entry.tag === 'move'
8498			? entry.data
8499			: render(entry.vnode, patch.eventNode)
8500		);
8501	}
8502	return frag;
8503}
8504
8505
8506// PROGRAMS
8507
8508var program = makeProgram(checkNoFlags);
8509var programWithFlags = makeProgram(checkYesFlags);
8510
8511function makeProgram(flagChecker)
8512{
8513	return F2(function(debugWrap, impl)
8514	{
8515		return function(flagDecoder)
8516		{
8517			return function(object, moduleName, debugMetadata)
8518			{
8519				var checker = flagChecker(flagDecoder, moduleName);
8520				if (typeof debugMetadata === 'undefined')
8521				{
8522					normalSetup(impl, object, moduleName, checker);
8523				}
8524				else
8525				{
8526					debugSetup(A2(debugWrap, debugMetadata, impl), object, moduleName, checker);
8527				}
8528			};
8529		};
8530	});
8531}
8532
8533function staticProgram(vNode)
8534{
8535	var nothing = _elm_lang$core$Native_Utils.Tuple2(
8536		_elm_lang$core$Native_Utils.Tuple0,
8537		_elm_lang$core$Platform_Cmd$none
8538	);
8539	return A2(program, _elm_lang$virtual_dom$VirtualDom_Debug$wrap, {
8540		init: nothing,
8541		view: function() { return vNode; },
8542		update: F2(function() { return nothing; }),
8543		subscriptions: function() { return _elm_lang$core$Platform_Sub$none; }
8544	})();
8545}
8546
8547
8548// FLAG CHECKERS
8549
8550function checkNoFlags(flagDecoder, moduleName)
8551{
8552	return function(init, flags, domNode)
8553	{
8554		if (typeof flags === 'undefined')
8555		{
8556			return init;
8557		}
8558
8559		var errorMessage =
8560			'The `' + moduleName + '` module does not need flags.\n'
8561			+ 'Initialize it with no arguments and you should be all set!';
8562
8563		crash(errorMessage, domNode);
8564	};
8565}
8566
8567function checkYesFlags(flagDecoder, moduleName)
8568{
8569	return function(init, flags, domNode)
8570	{
8571		if (typeof flagDecoder === 'undefined')
8572		{
8573			var errorMessage =
8574				'Are you trying to sneak a Never value into Elm? Trickster!\n'
8575				+ 'It looks like ' + moduleName + '.main is defined with `programWithFlags` but has type `Program Never`.\n'
8576				+ 'Use `program` instead if you do not want flags.'
8577
8578			crash(errorMessage, domNode);
8579		}
8580
8581		var result = A2(_elm_lang$core$Native_Json.run, flagDecoder, flags);
8582		if (result.ctor === 'Ok')
8583		{
8584			return init(result._0);
8585		}
8586
8587		var errorMessage =
8588			'Trying to initialize the `' + moduleName + '` module with an unexpected flag.\n'
8589			+ 'I tried to convert it to an Elm value, but ran into this problem:\n\n'
8590			+ result._0;
8591
8592		crash(errorMessage, domNode);
8593	};
8594}
8595
8596function crash(errorMessage, domNode)
8597{
8598	if (domNode)
8599	{
8600		domNode.innerHTML =
8601			'<div style="padding-left:1em;">'
8602			+ '<h2 style="font-weight:normal;"><b>Oops!</b> Something went wrong when starting your Elm program.</h2>'
8603			+ '<pre style="padding-left:1em;">' + errorMessage + '</pre>'
8604			+ '</div>';
8605	}
8606
8607	throw new Error(errorMessage);
8608}
8609
8610
8611//  NORMAL SETUP
8612
8613function normalSetup(impl, object, moduleName, flagChecker)
8614{
8615	object['embed'] = function embed(node, flags)
8616	{
8617		while (node.lastChild)
8618		{
8619			node.removeChild(node.lastChild);
8620		}
8621
8622		return _elm_lang$core$Native_Platform.initialize(
8623			flagChecker(impl.init, flags, node),
8624			impl.update,
8625			impl.subscriptions,
8626			normalRenderer(node, impl.view)
8627		);
8628	};
8629
8630	object['fullscreen'] = function fullscreen(flags)
8631	{
8632		return _elm_lang$core$Native_Platform.initialize(
8633			flagChecker(impl.init, flags, document.body),
8634			impl.update,
8635			impl.subscriptions,
8636			normalRenderer(document.body, impl.view)
8637		);
8638	};
8639}
8640
8641function normalRenderer(parentNode, view)
8642{
8643	return function(tagger, initialModel)
8644	{
8645		var eventNode = { tagger: tagger, parent: undefined };
8646		var initialVirtualNode = view(initialModel);
8647		var domNode = render(initialVirtualNode, eventNode);
8648		parentNode.appendChild(domNode);
8649		return makeStepper(domNode, view, initialVirtualNode, eventNode);
8650	};
8651}
8652
8653
8654// STEPPER
8655
8656var rAF =
8657	typeof requestAnimationFrame !== 'undefined'
8658		? requestAnimationFrame
8659		: function(callback) { setTimeout(callback, 1000 / 60); };
8660
8661function makeStepper(domNode, view, initialVirtualNode, eventNode)
8662{
8663	var state = 'NO_REQUEST';
8664	var currNode = initialVirtualNode;
8665	var nextModel;
8666
8667	function updateIfNeeded()
8668	{
8669		switch (state)
8670		{
8671			case 'NO_REQUEST':
8672				throw new Error(
8673					'Unexpected draw callback.\n' +
8674					'Please report this to <https://github.com/elm-lang/virtual-dom/issues>.'
8675				);
8676
8677			case 'PENDING_REQUEST':
8678				rAF(updateIfNeeded);
8679				state = 'EXTRA_REQUEST';
8680
8681				var nextNode = view(nextModel);
8682				var patches = diff(currNode, nextNode);
8683				domNode = applyPatches(domNode, currNode, patches, eventNode);
8684				currNode = nextNode;
8685
8686				return;
8687
8688			case 'EXTRA_REQUEST':
8689				state = 'NO_REQUEST';
8690				return;
8691		}
8692	}
8693
8694	return function stepper(model)
8695	{
8696		if (state === 'NO_REQUEST')
8697		{
8698			rAF(updateIfNeeded);
8699		}
8700		state = 'PENDING_REQUEST';
8701		nextModel = model;
8702	};
8703}
8704
8705
8706// DEBUG SETUP
8707
8708function debugSetup(impl, object, moduleName, flagChecker)
8709{
8710	object['fullscreen'] = function fullscreen(flags)
8711	{
8712		var popoutRef = { doc: undefined };
8713		return _elm_lang$core$Native_Platform.initialize(
8714			flagChecker(impl.init, flags, document.body),
8715			impl.update(scrollTask(popoutRef)),
8716			impl.subscriptions,
8717			debugRenderer(moduleName, document.body, popoutRef, impl.view, impl.viewIn, impl.viewOut)
8718		);
8719	};
8720
8721	object['embed'] = function fullscreen(node, flags)
8722	{
8723		var popoutRef = { doc: undefined };
8724		return _elm_lang$core$Native_Platform.initialize(
8725			flagChecker(impl.init, flags, node),
8726			impl.update(scrollTask(popoutRef)),
8727			impl.subscriptions,
8728			debugRenderer(moduleName, node, popoutRef, impl.view, impl.viewIn, impl.viewOut)
8729		);
8730	};
8731}
8732
8733function scrollTask(popoutRef)
8734{
8735	return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)
8736	{
8737		var doc = popoutRef.doc;
8738		if (doc)
8739		{
8740			var msgs = doc.getElementsByClassName('debugger-sidebar-messages')[0];
8741			if (msgs)
8742			{
8743				msgs.scrollTop = msgs.scrollHeight;
8744			}
8745		}
8746		callback(_elm_lang$core$Native_Scheduler.succeed(_elm_lang$core$Native_Utils.Tuple0));
8747	});
8748}
8749
8750
8751function debugRenderer(moduleName, parentNode, popoutRef, view, viewIn, viewOut)
8752{
8753	return function(tagger, initialModel)
8754	{
8755		var appEventNode = { tagger: tagger, parent: undefined };
8756		var eventNode = { tagger: tagger, parent: undefined };
8757
8758		// make normal stepper
8759		var appVirtualNode = view(initialModel);
8760		var appNode = render(appVirtualNode, appEventNode);
8761		parentNode.appendChild(appNode);
8762		var appStepper = makeStepper(appNode, view, appVirtualNode, appEventNode);
8763
8764		// make overlay stepper
8765		var overVirtualNode = viewIn(initialModel)._1;
8766		var overNode = render(overVirtualNode, eventNode);
8767		parentNode.appendChild(overNode);
8768		var wrappedViewIn = wrapViewIn(appEventNode, overNode, viewIn);
8769		var overStepper = makeStepper(overNode, wrappedViewIn, overVirtualNode, eventNode);
8770
8771		// make debugger stepper
8772		var debugStepper = makeDebugStepper(initialModel, viewOut, eventNode, parentNode, moduleName, popoutRef);
8773
8774		return function stepper(model)
8775		{
8776			appStepper(model);
8777			overStepper(model);
8778			debugStepper(model);
8779		}
8780	};
8781}
8782
8783function makeDebugStepper(initialModel, view, eventNode, parentNode, moduleName, popoutRef)
8784{
8785	var curr;
8786	var domNode;
8787
8788	return function stepper(model)
8789	{
8790		if (!model.isDebuggerOpen)
8791		{
8792			return;
8793		}
8794
8795		if (!popoutRef.doc)
8796		{
8797			curr = view(model);
8798			domNode = openDebugWindow(moduleName, popoutRef, curr, eventNode);
8799			return;
8800		}
8801
8802		// switch to document of popout
8803		localDoc = popoutRef.doc;
8804
8805		var next = view(model);
8806		var patches = diff(curr, next);
8807		domNode = applyPatches(domNode, curr, patches, eventNode);
8808		curr = next;
8809
8810		// switch back to normal document
8811		localDoc = document;
8812	};
8813}
8814
8815function openDebugWindow(moduleName, popoutRef, virtualNode, eventNode)
8816{
8817	var w = 900;
8818	var h = 360;
8819	var x = screen.width - w;
8820	var y = screen.height - h;
8821	var debugWindow = window.open('', '', 'width=' + w + ',height=' + h + ',left=' + x + ',top=' + y);
8822
8823	// switch to window document
8824	localDoc = debugWindow.document;
8825
8826	popoutRef.doc = localDoc;
8827	localDoc.title = 'Debugger - ' + moduleName;
8828	localDoc.body.style.margin = '0';
8829	localDoc.body.style.padding = '0';
8830	var domNode = render(virtualNode, eventNode);
8831	localDoc.body.appendChild(domNode);
8832
8833	localDoc.addEventListener('keydown', function(event) {
8834		if (event.metaKey && event.which === 82)
8835		{
8836			window.location.reload();
8837		}
8838		if (event.which === 38)
8839		{
8840			eventNode.tagger({ ctor: 'Up' });
8841			event.preventDefault();
8842		}
8843		if (event.which === 40)
8844		{
8845			eventNode.tagger({ ctor: 'Down' });
8846			event.preventDefault();
8847		}
8848	});
8849
8850	function close()
8851	{
8852		popoutRef.doc = undefined;
8853		debugWindow.close();
8854	}
8855	window.addEventListener('unload', close);
8856	debugWindow.addEventListener('unload', function() {
8857		popoutRef.doc = undefined;
8858		window.removeEventListener('unload', close);
8859		eventNode.tagger({ ctor: 'Close' });
8860	});
8861
8862	// switch back to the normal document
8863	localDoc = document;
8864
8865	return domNode;
8866}
8867
8868
8869// BLOCK EVENTS
8870
8871function wrapViewIn(appEventNode, overlayNode, viewIn)
8872{
8873	var ignorer = makeIgnorer(overlayNode);
8874	var blocking = 'Normal';
8875	var overflow;
8876
8877	var normalTagger = appEventNode.tagger;
8878	var blockTagger = function() {};
8879
8880	return function(model)
8881	{
8882		var tuple = viewIn(model);
8883		var newBlocking = tuple._0.ctor;
8884		appEventNode.tagger = newBlocking === 'Normal' ? normalTagger : blockTagger;
8885		if (blocking !== newBlocking)
8886		{
8887			traverse('removeEventListener', ignorer, blocking);
8888			traverse('addEventListener', ignorer, newBlocking);
8889
8890			if (blocking === 'Normal')
8891			{
8892				overflow = document.body.style.overflow;
8893				document.body.style.overflow = 'hidden';
8894			}
8895
8896			if (newBlocking === 'Normal')
8897			{
8898				document.body.style.overflow = overflow;
8899			}
8900
8901			blocking = newBlocking;
8902		}
8903		return tuple._1;
8904	}
8905}
8906
8907function traverse(verbEventListener, ignorer, blocking)
8908{
8909	switch(blocking)
8910	{
8911		case 'Normal':
8912			return;
8913
8914		case 'Pause':
8915			return traverseHelp(verbEventListener, ignorer, mostEvents);
8916
8917		case 'Message':
8918			return traverseHelp(verbEventListener, ignorer, allEvents);
8919	}
8920}
8921
8922function traverseHelp(verbEventListener, handler, eventNames)
8923{
8924	for (var i = 0; i < eventNames.length; i++)
8925	{
8926		document.body[verbEventListener](eventNames[i], handler, true);
8927	}
8928}
8929
8930function makeIgnorer(overlayNode)
8931{
8932	return function(event)
8933	{
8934		if (event.type === 'keydown' && event.metaKey && event.which === 82)
8935		{
8936			return;
8937		}
8938
8939		var isScroll = event.type === 'scroll' || event.type === 'wheel';
8940
8941		var node = event.target;
8942		while (node !== null)
8943		{
8944			if (node.className === 'elm-overlay-message-details' && isScroll)
8945			{
8946				return;
8947			}
8948
8949			if (node === overlayNode && !isScroll)
8950			{
8951				return;
8952			}
8953			node = node.parentNode;
8954		}
8955
8956		event.stopPropagation();
8957		event.preventDefault();
8958	}
8959}
8960
8961var mostEvents = [
8962	'click', 'dblclick', 'mousemove',
8963	'mouseup', 'mousedown', 'mouseenter', 'mouseleave',
8964	'touchstart', 'touchend', 'touchcancel', 'touchmove',
8965	'pointerdown', 'pointerup', 'pointerover', 'pointerout',
8966	'pointerenter', 'pointerleave', 'pointermove', 'pointercancel',
8967	'dragstart', 'drag', 'dragend', 'dragenter', 'dragover', 'dragleave', 'drop',
8968	'keyup', 'keydown', 'keypress',
8969	'input', 'change',
8970	'focus', 'blur'
8971];
8972
8973var allEvents = mostEvents.concat('wheel', 'scroll');
8974
8975
8976return {
8977	node: node,
8978	text: text,
8979	custom: custom,
8980	map: F2(map),
8981
8982	on: F3(on),
8983	style: style,
8984	property: F2(property),
8985	attribute: F2(attribute),
8986	attributeNS: F3(attributeNS),
8987	mapProperty: F2(mapProperty),
8988
8989	lazy: F2(lazy),
8990	lazy2: F3(lazy2),
8991	lazy3: F4(lazy3),
8992	keyedNode: F3(keyedNode),
8993
8994	program: program,
8995	programWithFlags: programWithFlags,
8996	staticProgram: staticProgram
8997};
8998
8999}();
9000
9001var _elm_lang$virtual_dom$VirtualDom$programWithFlags = function (impl) {
9002	return A2(_elm_lang$virtual_dom$Native_VirtualDom.programWithFlags, _elm_lang$virtual_dom$VirtualDom_Debug$wrapWithFlags, impl);
9003};
9004var _elm_lang$virtual_dom$VirtualDom$program = function (impl) {
9005	return A2(_elm_lang$virtual_dom$Native_VirtualDom.program, _elm_lang$virtual_dom$VirtualDom_Debug$wrap, impl);
9006};
9007var _elm_lang$virtual_dom$VirtualDom$keyedNode = _elm_lang$virtual_dom$Native_VirtualDom.keyedNode;
9008var _elm_lang$virtual_dom$VirtualDom$lazy3 = _elm_lang$virtual_dom$Native_VirtualDom.lazy3;
9009var _elm_lang$virtual_dom$VirtualDom$lazy2 = _elm_lang$virtual_dom$Native_VirtualDom.lazy2;
9010var _elm_lang$virtual_dom$VirtualDom$lazy = _elm_lang$virtual_dom$Native_VirtualDom.lazy;
9011var _elm_lang$virtual_dom$VirtualDom$defaultOptions = {stopPropagation: false, preventDefault: false};
9012var _elm_lang$virtual_dom$VirtualDom$onWithOptions = _elm_lang$virtual_dom$Native_VirtualDom.on;
9013var _elm_lang$virtual_dom$VirtualDom$on = F2(
9014	function (eventName, decoder) {
9015		return A3(_elm_lang$virtual_dom$VirtualDom$onWithOptions, eventName, _elm_lang$virtual_dom$VirtualDom$defaultOptions, decoder);
9016	});
9017var _elm_lang$virtual_dom$VirtualDom$style = _elm_lang$virtual_dom$Native_VirtualDom.style;
9018var _elm_lang$virtual_dom$VirtualDom$mapProperty = _elm_lang$virtual_dom$Native_VirtualDom.mapProperty;
9019var _elm_lang$virtual_dom$VirtualDom$attributeNS = _elm_lang$virtual_dom$Native_VirtualDom.attributeNS;
9020var _elm_lang$virtual_dom$VirtualDom$attribute = _elm_lang$virtual_dom$Native_VirtualDom.attribute;
9021var _elm_lang$virtual_dom$VirtualDom$property = _elm_lang$virtual_dom$Native_VirtualDom.property;
9022var _elm_lang$virtual_dom$VirtualDom$map = _elm_lang$virtual_dom$Native_VirtualDom.map;
9023var _elm_lang$virtual_dom$VirtualDom$text = _elm_lang$virtual_dom$Native_VirtualDom.text;
9024var _elm_lang$virtual_dom$VirtualDom$node = _elm_lang$virtual_dom$Native_VirtualDom.node;
9025var _elm_lang$virtual_dom$VirtualDom$Options = F2(
9026	function (a, b) {
9027		return {stopPropagation: a, preventDefault: b};
9028	});
9029var _elm_lang$virtual_dom$VirtualDom$Node = {ctor: 'Node'};
9030var _elm_lang$virtual_dom$VirtualDom$Property = {ctor: 'Property'};
9031
9032var _elm_lang$html$Html$programWithFlags = _elm_lang$virtual_dom$VirtualDom$programWithFlags;
9033var _elm_lang$html$Html$program = _elm_lang$virtual_dom$VirtualDom$program;
9034var _elm_lang$html$Html$beginnerProgram = function (_p0) {
9035	var _p1 = _p0;
9036	return _elm_lang$html$Html$program(
9037		{
9038			init: A2(
9039				_elm_lang$core$Platform_Cmd_ops['!'],
9040				_p1.model,
9041				{ctor: '[]'}),
9042			update: F2(
9043				function (msg, model) {
9044					return A2(
9045						_elm_lang$core$Platform_Cmd_ops['!'],
9046						A2(_p1.update, msg, model),
9047						{ctor: '[]'});
9048				}),
9049			view: _p1.view,
9050			subscriptions: function (_p2) {
9051				return _elm_lang$core$Platform_Sub$none;
9052			}
9053		});
9054};
9055var _elm_lang$html$Html$map = _elm_lang$virtual_dom$VirtualDom$map;
9056var _elm_lang$html$Html$text = _elm_lang$virtual_dom$VirtualDom$text;
9057var _elm_lang$html$Html$node = _elm_lang$virtual_dom$VirtualDom$node;
9058var _elm_lang$html$Html$body = _elm_lang$html$Html$node('body');
9059var _elm_lang$html$Html$section = _elm_lang$html$Html$node('section');
9060var _elm_lang$html$Html$nav = _elm_lang$html$Html$node('nav');
9061var _elm_lang$html$Html$article = _elm_lang$html$Html$node('article');
9062var _elm_lang$html$Html$aside = _elm_lang$html$Html$node('aside');
9063var _elm_lang$html$Html$h1 = _elm_lang$html$Html$node('h1');
9064var _elm_lang$html$Html$h2 = _elm_lang$html$Html$node('h2');
9065var _elm_lang$html$Html$h3 = _elm_lang$html$Html$node('h3');
9066var _elm_lang$html$Html$h4 = _elm_lang$html$Html$node('h4');
9067var _elm_lang$html$Html$h5 = _elm_lang$html$Html$node('h5');
9068var _elm_lang$html$Html$h6 = _elm_lang$html$Html$node('h6');
9069var _elm_lang$html$Html$header = _elm_lang$html$Html$node('header');
9070var _elm_lang$html$Html$footer = _elm_lang$html$Html$node('footer');
9071var _elm_lang$html$Html$address = _elm_lang$html$Html$node('address');
9072var _elm_lang$html$Html$main_ = _elm_lang$html$Html$node('main');
9073var _elm_lang$html$Html$p = _elm_lang$html$Html$node('p');
9074var _elm_lang$html$Html$hr = _elm_lang$html$Html$node('hr');
9075var _elm_lang$html$Html$pre = _elm_lang$html$Html$node('pre');
9076var _elm_lang$html$Html$blockquote = _elm_lang$html$Html$node('blockquote');
9077var _elm_lang$html$Html$ol = _elm_lang$html$Html$node('ol');
9078var _elm_lang$html$Html$ul = _elm_lang$html$Html$node('ul');
9079var _elm_lang$html$Html$li = _elm_lang$html$Html$node('li');
9080var _elm_lang$html$Html$dl = _elm_lang$html$Html$node('dl');
9081var _elm_lang$html$Html$dt = _elm_lang$html$Html$node('dt');
9082var _elm_lang$html$Html$dd = _elm_lang$html$Html$node('dd');
9083var _elm_lang$html$Html$figure = _elm_lang$html$Html$node('figure');
9084var _elm_lang$html$Html$figcaption = _elm_lang$html$Html$node('figcaption');
9085var _elm_lang$html$Html$div = _elm_lang$html$Html$node('div');
9086var _elm_lang$html$Html$a = _elm_lang$html$Html$node('a');
9087var _elm_lang$html$Html$em = _elm_lang$html$Html$node('em');
9088var _elm_lang$html$Html$strong = _elm_lang$html$Html$node('strong');
9089var _elm_lang$html$Html$small = _elm_lang$html$Html$node('small');
9090var _elm_lang$html$Html$s = _elm_lang$html$Html$node('s');
9091var _elm_lang$html$Html$cite = _elm_lang$html$Html$node('cite');
9092var _elm_lang$html$Html$q = _elm_lang$html$Html$node('q');
9093var _elm_lang$html$Html$dfn = _elm_lang$html$Html$node('dfn');
9094var _elm_lang$html$Html$abbr = _elm_lang$html$Html$node('abbr');
9095var _elm_lang$html$Html$time = _elm_lang$html$Html$node('time');
9096var _elm_lang$html$Html$code = _elm_lang$html$Html$node('code');
9097var _elm_lang$html$Html$var = _elm_lang$html$Html$node('var');
9098var _elm_lang$html$Html$samp = _elm_lang$html$Html$node('samp');
9099var _elm_lang$html$Html$kbd = _elm_lang$html$Html$node('kbd');
9100var _elm_lang$html$Html$sub = _elm_lang$html$Html$node('sub');
9101var _elm_lang$html$Html$sup = _elm_lang$html$Html$node('sup');
9102var _elm_lang$html$Html$i = _elm_lang$html$Html$node('i');
9103var _elm_lang$html$Html$b = _elm_lang$html$Html$node('b');
9104var _elm_lang$html$Html$u = _elm_lang$html$Html$node('u');
9105var _elm_lang$html$Html$mark = _elm_lang$html$Html$node('mark');
9106var _elm_lang$html$Html$ruby = _elm_lang$html$Html$node('ruby');
9107var _elm_lang$html$Html$rt = _elm_lang$html$Html$node('rt');
9108var _elm_lang$html$Html$rp = _elm_lang$html$Html$node('rp');
9109var _elm_lang$html$Html$bdi = _elm_lang$html$Html$node('bdi');
9110var _elm_lang$html$Html$bdo = _elm_lang$html$Html$node('bdo');
9111var _elm_lang$html$Html$span = _elm_lang$html$Html$node('span');
9112var _elm_lang$html$Html$br = _elm_lang$html$Html$node('br');
9113var _elm_lang$html$Html$wbr = _elm_lang$html$Html$node('wbr');
9114var _elm_lang$html$Html$ins = _elm_lang$html$Html$node('ins');
9115var _elm_lang$html$Html$del = _elm_lang$html$Html$node('del');
9116var _elm_lang$html$Html$img = _elm_lang$html$Html$node('img');
9117var _elm_lang$html$Html$iframe = _elm_lang$html$Html$node('iframe');
9118var _elm_lang$html$Html$embed = _elm_lang$html$Html$node('embed');
9119var _elm_lang$html$Html$object = _elm_lang$html$Html$node('object');
9120var _elm_lang$html$Html$param = _elm_lang$html$Html$node('param');
9121var _elm_lang$html$Html$video = _elm_lang$html$Html$node('video');
9122var _elm_lang$html$Html$audio = _elm_lang$html$Html$node('audio');
9123var _elm_lang$html$Html$source = _elm_lang$html$Html$node('source');
9124var _elm_lang$html$Html$track = _elm_lang$html$Html$node('track');
9125var _elm_lang$html$Html$canvas = _elm_lang$html$Html$node('canvas');
9126var _elm_lang$html$Html$math = _elm_lang$html$Html$node('math');
9127var _elm_lang$html$Html$table = _elm_lang$html$Html$node('table');
9128var _elm_lang$html$Html$caption = _elm_lang$html$Html$node('caption');
9129var _elm_lang$html$Html$colgroup = _elm_lang$html$Html$node('colgroup');
9130var _elm_lang$html$Html$col = _elm_lang$html$Html$node('col');
9131var _elm_lang$html$Html$tbody = _elm_lang$html$Html$node('tbody');
9132var _elm_lang$html$Html$thead = _elm_lang$html$Html$node('thead');
9133var _elm_lang$html$Html$tfoot = _elm_lang$html$Html$node('tfoot');
9134var _elm_lang$html$Html$tr = _elm_lang$html$Html$node('tr');
9135var _elm_lang$html$Html$td = _elm_lang$html$Html$node('td');
9136var _elm_lang$html$Html$th = _elm_lang$html$Html$node('th');
9137var _elm_lang$html$Html$form = _elm_lang$html$Html$node('form');
9138var _elm_lang$html$Html$fieldset = _elm_lang$html$Html$node('fieldset');
9139var _elm_lang$html$Html$legend = _elm_lang$html$Html$node('legend');
9140var _elm_lang$html$Html$label = _elm_lang$html$Html$node('label');
9141var _elm_lang$html$Html$input = _elm_lang$html$Html$node('input');
9142var _elm_lang$html$Html$button = _elm_lang$html$Html$node('button');
9143var _elm_lang$html$Html$select = _elm_lang$html$Html$node('select');
9144var _elm_lang$html$Html$datalist = _elm_lang$html$Html$node('datalist');
9145var _elm_lang$html$Html$optgroup = _elm_lang$html$Html$node('optgroup');
9146var _elm_lang$html$Html$option = _elm_lang$html$Html$node('option');
9147var _elm_lang$html$Html$textarea = _elm_lang$html$Html$node('textarea');
9148var _elm_lang$html$Html$keygen = _elm_lang$html$Html$node('keygen');
9149var _elm_lang$html$Html$output = _elm_lang$html$Html$node('output');
9150var _elm_lang$html$Html$progress = _elm_lang$html$Html$node('progress');
9151var _elm_lang$html$Html$meter = _elm_lang$html$Html$node('meter');
9152var _elm_lang$html$Html$details = _elm_lang$html$Html$node('details');
9153var _elm_lang$html$Html$summary = _elm_lang$html$Html$node('summary');
9154var _elm_lang$html$Html$menuitem = _elm_lang$html$Html$node('menuitem');
9155var _elm_lang$html$Html$menu = _elm_lang$html$Html$node('menu');
9156
9157var _elm_lang$html$Html_Attributes$map = _elm_lang$virtual_dom$VirtualDom$mapProperty;
9158var _elm_lang$html$Html_Attributes$attribute = _elm_lang$virtual_dom$VirtualDom$attribute;
9159var _elm_lang$html$Html_Attributes$contextmenu = function (value) {
9160	return A2(_elm_lang$html$Html_Attributes$attribute, 'contextmenu', value);
9161};
9162var _elm_lang$html$Html_Attributes$draggable = function (value) {
9163	return A2(_elm_lang$html$Html_Attributes$attribute, 'draggable', value);
9164};
9165var _elm_lang$html$Html_Attributes$itemprop = function (value) {
9166	return A2(_elm_lang$html$Html_Attributes$attribute, 'itemprop', value);
9167};
9168var _elm_lang$html$Html_Attributes$tabindex = function (n) {
9169	return A2(
9170		_elm_lang$html$Html_Attributes$attribute,
9171		'tabIndex',
9172		_elm_lang$core$Basics$toString(n));
9173};
9174var _elm_lang$html$Html_Attributes$charset = function (value) {
9175	return A2(_elm_lang$html$Html_Attributes$attribute, 'charset', value);
9176};
9177var _elm_lang$html$Html_Attributes$height = function (value) {
9178	return A2(
9179		_elm_lang$html$Html_Attributes$attribute,
9180		'height',
9181		_elm_lang$core$Basics$toString(value));
9182};
9183var _elm_lang$html$Html_Attributes$width = function (value) {
9184	return A2(
9185		_elm_lang$html$Html_Attributes$attribute,
9186		'width',
9187		_elm_lang$core$Basics$toString(value));
9188};
9189var _elm_lang$html$Html_Attributes$formaction = function (value) {
9190	return A2(_elm_lang$html$Html_Attributes$attribute, 'formAction', value);
9191};
9192var _elm_lang$html$Html_Attributes$list = function (value) {
9193	return A2(_elm_lang$html$Html_Attributes$attribute, 'list', value);
9194};
9195var _elm_lang$html$Html_Attributes$minlength = function (n) {
9196	return A2(
9197		_elm_lang$html$Html_Attributes$attribute,
9198		'minLength',
9199		_elm_lang$core$Basics$toString(n));
9200};
9201var _elm_lang$html$Html_Attributes$maxlength = function (n) {
9202	return A2(
9203		_elm_lang$html$Html_Attributes$attribute,
9204		'maxlength',
9205		_elm_lang$core$Basics$toString(n));
9206};
9207var _elm_lang$html$Html_Attributes$size = function (n) {
9208	return A2(
9209		_elm_lang$html$Html_Attributes$attribute,
9210		'size',
9211		_elm_lang$core$Basics$toString(n));
9212};
9213var _elm_lang$html$Html_Attributes$form = function (value) {
9214	return A2(_elm_lang$html$Html_Attributes$attribute, 'form', value);
9215};
9216var _elm_lang$html$Html_Attributes$cols = function (n) {
9217	return A2(
9218		_elm_lang$html$Html_Attributes$attribute,
9219		'cols',
9220		_elm_lang$core$Basics$toString(n));
9221};
9222var _elm_lang$html$Html_Attributes$rows = function (n) {
9223	return A2(
9224		_elm_lang$html$Html_Attributes$attribute,
9225		'rows',
9226		_elm_lang$core$Basics$toString(n));
9227};
9228var _elm_lang$html$Html_Attributes$challenge = function (value) {
9229	return A2(_elm_lang$html$Html_Attributes$attribute, 'challenge', value);
9230};
9231var _elm_lang$html$Html_Attributes$media = function (value) {
9232	return A2(_elm_lang$html$Html_Attributes$attribute, 'media', value);
9233};
9234var _elm_lang$html$Html_Attributes$rel = function (value) {
9235	return A2(_elm_lang$html$Html_Attributes$attribute, 'rel', value);
9236};
9237var _elm_lang$html$Html_Attributes$datetime = function (value) {
9238	return A2(_elm_lang$html$Html_Attributes$attribute, 'datetime', value);
9239};
9240var _elm_lang$html$Html_Attributes$pubdate = function (value) {
9241	return A2(_elm_lang$html$Html_Attributes$attribute, 'pubdate', value);
9242};
9243var _elm_lang$html$Html_Attributes$colspan = function (n) {
9244	return A2(
9245		_elm_lang$html$Html_Attributes$attribute,
9246		'colspan',
9247		_elm_lang$core$Basics$toString(n));
9248};
9249var _elm_lang$html$Html_Attributes$rowspan = function (n) {
9250	return A2(
9251		_elm_lang$html$Html_Attributes$attribute,
9252		'rowspan',
9253		_elm_lang$core$Basics$toString(n));
9254};
9255var _elm_lang$html$Html_Attributes$manifest = function (value) {
9256	return A2(_elm_lang$html$Html_Attributes$attribute, 'manifest', value);
9257};
9258var _elm_lang$html$Html_Attributes$property = _elm_lang$virtual_dom$VirtualDom$property;
9259var _elm_lang$html$Html_Attributes$stringProperty = F2(
9260	function (name, string) {
9261		return A2(
9262			_elm_lang$html$Html_Attributes$property,
9263			name,
9264			_elm_lang$core$Json_Encode$string(string));
9265	});
9266var _elm_lang$html$Html_Attributes$class = function (name) {
9267	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'className', name);
9268};
9269var _elm_lang$html$Html_Attributes$id = function (name) {
9270	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'id', name);
9271};
9272var _elm_lang$html$Html_Attributes$title = function (name) {
9273	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'title', name);
9274};
9275var _elm_lang$html$Html_Attributes$accesskey = function ($char) {
9276	return A2(
9277		_elm_lang$html$Html_Attributes$stringProperty,
9278		'accessKey',
9279		_elm_lang$core$String$fromChar($char));
9280};
9281var _elm_lang$html$Html_Attributes$dir = function (value) {
9282	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'dir', value);
9283};
9284var _elm_lang$html$Html_Attributes$dropzone = function (value) {
9285	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'dropzone', value);
9286};
9287var _elm_lang$html$Html_Attributes$lang = function (value) {
9288	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'lang', value);
9289};
9290var _elm_lang$html$Html_Attributes$content = function (value) {
9291	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'content', value);
9292};
9293var _elm_lang$html$Html_Attributes$httpEquiv = function (value) {
9294	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'httpEquiv', value);
9295};
9296var _elm_lang$html$Html_Attributes$language = function (value) {
9297	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'language', value);
9298};
9299var _elm_lang$html$Html_Attributes$src = function (value) {
9300	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'src', value);
9301};
9302var _elm_lang$html$Html_Attributes$alt = function (value) {
9303	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'alt', value);
9304};
9305var _elm_lang$html$Html_Attributes$preload = function (value) {
9306	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'preload', value);
9307};
9308var _elm_lang$html$Html_Attributes$poster = function (value) {
9309	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'poster', value);
9310};
9311var _elm_lang$html$Html_Attributes$kind = function (value) {
9312	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'kind', value);
9313};
9314var _elm_lang$html$Html_Attributes$srclang = function (value) {
9315	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'srclang', value);
9316};
9317var _elm_lang$html$Html_Attributes$sandbox = function (value) {
9318	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'sandbox', value);
9319};
9320var _elm_lang$html$Html_Attributes$srcdoc = function (value) {
9321	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'srcdoc', value);
9322};
9323var _elm_lang$html$Html_Attributes$type_ = function (value) {
9324	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'type', value);
9325};
9326var _elm_lang$html$Html_Attributes$value = function (value) {
9327	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'value', value);
9328};
9329var _elm_lang$html$Html_Attributes$defaultValue = function (value) {
9330	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'defaultValue', value);
9331};
9332var _elm_lang$html$Html_Attributes$placeholder = function (value) {
9333	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'placeholder', value);
9334};
9335var _elm_lang$html$Html_Attributes$accept = function (value) {
9336	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'accept', value);
9337};
9338var _elm_lang$html$Html_Attributes$acceptCharset = function (value) {
9339	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'acceptCharset', value);
9340};
9341var _elm_lang$html$Html_Attributes$action = function (value) {
9342	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'action', value);
9343};
9344var _elm_lang$html$Html_Attributes$autocomplete = function (bool) {
9345	return A2(
9346		_elm_lang$html$Html_Attributes$stringProperty,
9347		'autocomplete',
9348		bool ? 'on' : 'off');
9349};
9350var _elm_lang$html$Html_Attributes$enctype = function (value) {
9351	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'enctype', value);
9352};
9353var _elm_lang$html$Html_Attributes$method = function (value) {
9354	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'method', value);
9355};
9356var _elm_lang$html$Html_Attributes$name = function (value) {
9357	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'name', value);
9358};
9359var _elm_lang$html$Html_Attributes$pattern = function (value) {
9360	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'pattern', value);
9361};
9362var _elm_lang$html$Html_Attributes$for = function (value) {
9363	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'htmlFor', value);
9364};
9365var _elm_lang$html$Html_Attributes$max = function (value) {
9366	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'max', value);
9367};
9368var _elm_lang$html$Html_Attributes$min = function (value) {
9369	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'min', value);
9370};
9371var _elm_lang$h
9371tml$Html_Attributes$step = function (n) {
9372	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'step', n);
9373};
9374var _elm_lang$html$Html_Attributes$wrap = function (value) {
9375	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'wrap', value);
9376};
9377var _elm_lang$html$Html_Attributes$usemap = function (value) {
9378	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'useMap', value);
9379};
9380var _elm_lang$html$Html_Attributes$shape = function (value) {
9381	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'shape', value);
9382};
9383var _elm_lang$html$Html_Attributes$coords = function (value) {
9384	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'coords', value);
9385};
9386var _elm_lang$html$Html_Attributes$keytype = function (value) {
9387	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'keytype', value);
9388};
9389var _elm_lang$html$Html_Attributes$align = function (value) {
9390	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'align', value);
9391};
9392var _elm_lang$html$Html_Attributes$cite = function (value) {
9393	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'cite', value);
9394};
9395var _elm_lang$html$Html_Attributes$href = function (value) {
9396	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'href', value);
9397};
9398var _elm_lang$html$Html_Attributes$target = function (value) {
9399	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'target', value);
9400};
9401var _elm_lang$html$Html_Attributes$downloadAs = function (value) {
9402	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'download', value);
9403};
9404var _elm_lang$html$Html_Attributes$hreflang = function (value) {
9405	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'hreflang', value);
9406};
9407var _elm_lang$html$Html_Attributes$ping = function (value) {
9408	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'ping', value);
9409};
9410var _elm_lang$html$Html_Attributes$start = function (n) {
9411	return A2(
9412		_elm_lang$html$Html_Attributes$stringProperty,
9413		'start',
9414		_elm_lang$core$Basics$toString(n));
9415};
9416var _elm_lang$html$Html_Attributes$headers = function (value) {
9417	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'headers', value);
9418};
9419var _elm_lang$html$Html_Attributes$scope = function (value) {
9420	return A2(_elm_lang$html$Html_Attributes$stringProperty, 'scope', value);
9421};
9422var _elm_lang$html$Html_Attributes$boolProperty = F2(
9423	function (name, bool) {
9424		return A2(
9425			_elm_lang$html$Html_Attributes$property,
9426			name,
9427			_elm_lang$core$Json_Encode$bool(bool));
9428	});
9429var _elm_lang$html$Html_Attributes$hidden = function (bool) {
9430	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'hidden', bool);
9431};
9432var _elm_lang$html$Html_Attributes$contenteditable = function (bool) {
9433	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'contentEditable', bool);
9434};
9435var _elm_lang$html$Html_Attributes$spellcheck = function (bool) {
9436	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'spellcheck', bool);
9437};
9438var _elm_lang$html$Html_Attributes$async = function (bool) {
9439	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'async', bool);
9440};
9441var _elm_lang$html$Html_Attributes$defer = function (bool) {
9442	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'defer', bool);
9443};
9444var _elm_lang$html$Html_Attributes$scoped = function (bool) {
9445	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'scoped', bool);
9446};
9447var _elm_lang$html$Html_Attributes$autoplay = function (bool) {
9448	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'autoplay', bool);
9449};
9450var _elm_lang$html$Html_Attributes$controls = function (bool) {
9451	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'controls', bool);
9452};
9453var _elm_lang$html$Html_Attributes$loop = function (bool) {
9454	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'loop', bool);
9455};
9456var _elm_lang$html$Html_Attributes$default = function (bool) {
9457	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'default', bool);
9458};
9459var _elm_lang$html$Html_Attributes$seamless = function (bool) {
9460	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'seamless', bool);
9461};
9462var _elm_lang$html$Html_Attributes$checked = function (bool) {
9463	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'checked', bool);
9464};
9465var _elm_lang$html$Html_Attributes$selected = function (bool) {
9466	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'selected', bool);
9467};
9468var _elm_lang$html$Html_Attributes$autofocus = function (bool) {
9469	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'autofocus', bool);
9470};
9471var _elm_lang$html$Html_Attributes$disabled = function (bool) {
9472	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'disabled', bool);
9473};
9474var _elm_lang$html$Html_Attributes$multiple = function (bool) {
9475	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'multiple', bool);
9476};
9477var _elm_lang$html$Html_Attributes$novalidate = function (bool) {
9478	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'noValidate', bool);
9479};
9480var _elm_lang$html$Html_Attributes$readonly = function (bool) {
9481	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'readOnly', bool);
9482};
9483var _elm_lang$html$Html_Attributes$required = function (bool) {
9484	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'required', bool);
9485};
9486var _elm_lang$html$Html_Attributes$ismap = function (value) {
9487	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'isMap', value);
9488};
9489var _elm_lang$html$Html_Attributes$download = function (bool) {
9490	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'download', bool);
9491};
9492var _elm_lang$html$Html_Attributes$reversed = function (bool) {
9493	return A2(_elm_lang$html$Html_Attributes$boolProperty, 'reversed', bool);
9494};
9495var _elm_lang$html$Html_Attributes$classList = function (list) {
9496	return _elm_lang$html$Html_Attributes$class(
9497		A2(
9498			_elm_lang$core$String$join,
9499			' ',
9500			A2(
9501				_elm_lang$core$List$map,
9502				_elm_lang$core$Tuple$first,
9503				A2(_elm_lang$core$List$filter, _elm_lang$core$Tuple$second, list))));
9504};
9505var _elm_lang$html$Html_Attributes$style = _elm_lang$virtual_dom$VirtualDom$style;
9506
9507var _elm_lang$html$Html_Events$keyCode = A2(_elm_lang$core$Json_Decode$field, 'keyCode', _elm_lang$core$Json_Decode$int);
9508var _elm_lang$html$Html_Events$targetChecked = A2(
9509	_elm_lang$core$Json_Decode$at,
9510	{
9511		ctor: '::',
9512		_0: 'target',
9513		_1: {
9514			ctor: '::',
9515			_0: 'checked',
9516			_1: {ctor: '[]'}
9517		}
9518	},
9519	_elm_lang$core$Json_Decode$bool);
9520var _elm_lang$html$Html_Events$targetValue = A2(
9521	_elm_lang$core$Json_Decode$at,
9522	{
9523		ctor: '::',
9524		_0: 'target',
9525		_1: {
9526			ctor: '::',
9527			_0: 'value',
9528			_1: {ctor: '[]'}
9529		}
9530	},
9531	_elm_lang$core$Json_Decode$string);
9532var _elm_lang$html$Html_Events$defaultOptions = _elm_lang$virtual_dom$VirtualDom$defaultOptions;
9533var _elm_lang$html$Html_Events$onWithOptions = _elm_lang$virtual_dom$VirtualDom$onWithOptions;
9534var _elm_lang$html$Html_Events$on = _elm_lang$virtual_dom$VirtualDom$on;
9535var _elm_lang$html$Html_Events$onFocus = function (msg) {
9536	return A2(
9537		_elm_lang$html$Html_Events$on,
9538		'focus',
9539		_elm_lang$core$Json_Decode$succeed(msg));
9540};
9541var _elm_lang$html$Html_Events$onBlur = function (msg) {
9542	return A2(
9543		_elm_lang$html$Html_Events$on,
9544		'blur',
9545		_elm_lang$core$Json_Decode$succeed(msg));
9546};
9547var _elm_lang$html$Html_Events$onSubmitOptions = _elm_lang$core$Native_Utils.update(
9548	_elm_lang$html$Html_Events$defaultOptions,
9549	{preventDefault: true});
9550var _elm_lang$html$Html_Events$onSubmit = function (msg) {
9551	return A3(
9552		_elm_lang$html$Html_Events$onWithOptions,
9553		'submit',
9554		_elm_lang$html$Html_Events$onSubmitOptions,
9555		_elm_lang$core$Json_Decode$succeed(msg));
9556};
9557var _elm_lang$html$Html_Events$onCheck = function (tagger) {
9558	return A2(
9559		_elm_lang$html$Html_Events$on,
9560		'change',
9561		A2(_elm_lang$core$Json_Decode$map, tagger, _elm_lang$html$Html_Events$targetChecked));
9562};
9563var _elm_lang$html$Html_Events$onInput = function (tagger) {
9564	return A2(
9565		_elm_lang$html$Html_Events$on,
9566		'input',
9567		A2(_elm_lang$core$Json_Decode$map, tagger, _elm_lang$html$Html_Events$targetValue));
9568};
9569var _elm_lang$html$Html_Events$onMouseOut = function (msg) {
9570	return A2(
9571		_elm_lang$html$Html_Events$on,
9572		'mouseout',
9573		_elm_lang$core$Json_Decode$succeed(msg));
9574};
9575var _elm_lang$html$Html_Events$onMouseOver = function (msg) {
9576	return A2(
9577		_elm_lang$html$Html_Events$on,
9578		'mouseover',
9579		_elm_lang$core$Json_Decode$succeed(msg));
9580};
9581var _elm_lang$html$Html_Events$onMouseLeave = function (msg) {
9582	return A2(
9583		_elm_lang$html$Html_Events$on,
9584		'mouseleave',
9585		_elm_lang$core$Json_Decode$succeed(msg));
9586};
9587var _elm_lang$html$Html_Events$onMouseEnter = function (msg) {
9588	return A2(
9589		_elm_lang$html$Html_Events$on,
9590		'mouseenter',
9591		_elm_lang$core$Json_Decode$succeed(msg));
9592};
9593var _elm_lang$html$Html_Events$onMouseUp = function (msg) {
9594	return A2(
9595		_elm_lang$html$Html_Events$on,
9596		'mouseup',
9597		_elm_lang$core$Json_Decode$succeed(msg));
9598};
9599var _elm_lang$html$Html_Events$onMouseDown = function (msg) {
9600	return A2(
9601		_elm_lang$html$Html_Events$on,
9602		'mousedown',
9603		_elm_lang$core$Json_Decode$succeed(msg));
9604};
9605var _elm_lang$html$Html_Events$onDoubleClick = function (msg) {
9606	return A2(
9607		_elm_lang$html$Html_Events$on,
9608		'dblclick',
9609		_elm_lang$core$Json_Decode$succeed(msg));
9610};
9611var _elm_lang$html$Html_Events$onClick = function (msg) {
9612	return A2(
9613		_elm_lang$html$Html_Events$on,
9614		'click',
9615		_elm_lang$core$Json_Decode$succeed(msg));
9616};
9617var _elm_lang$html$Html_Events$Options = F2(
9618	function (a, b) {
9619		return {stopPropagation: a, preventDefault: b};
9620	});
9621
9622var _elm_lang$html$Html_Keyed$node = _elm_lang$virtual_dom$VirtualDom$keyedNode;
9623var _elm_lang$html$Html_Keyed$ol = _elm_lang$html$Html_Keyed$node('ol');
9624var _elm_lang$html$Html_Keyed$ul = _elm_lang$html$Html_Keyed$node('ul');
9625
9626var _elm_lang$http$Native_Http = function() {
9627
9628
9629// ENCODING AND DECODING
9630
9631function encodeUri(string)
9632{
9633	return encodeURIComponent(string);
9634}
9635
9636function decodeUri(string)
9637{
9638	try
9639	{
9640		return _elm_lang$core$Maybe$Just(decodeURIComponent(string));
9641	}
9642	catch(e)
9643	{
9644		return _elm_lang$core$Maybe$Nothing;
9645	}
9646}
9647
9648
9649// SEND REQUEST
9650
9651function toTask(request, maybeProgress)
9652{
9653	return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)
9654	{
9655		var xhr = new XMLHttpRequest();
9656
9657		configureProgress(xhr, maybeProgress);
9658
9659		xhr.addEventListener('error', function() {
9660			callback(_elm_lang$core$Native_Scheduler.fail({ ctor: 'NetworkError' }));
9661		});
9662		xhr.addEventListener('timeout', function() {
9663			callback(_elm_lang$core$Native_Scheduler.fail({ ctor: 'Timeout' }));
9664		});
9665		xhr.addEventListener('load', function() {
9666			callback(handleResponse(xhr, request.expect.responseToResult));
9667		});
9668
9669		try
9670		{
9671			xhr.open(request.method, request.url, true);
9672		}
9673		catch (e)
9674		{
9675			return callback(_elm_lang$core$Native_Scheduler.fail({ ctor: 'BadUrl', _0: request.url }));
9676		}
9677
9678		configureRequest(xhr, request);
9679		send(xhr, request.body);
9680
9681		return function() { xhr.abort(); };
9682	});
9683}
9684
9685function configureProgress(xhr, maybeProgress)
9686{
9687	if (maybeProgress.ctor === 'Nothing')
9688	{
9689		return;
9690	}
9691
9692	xhr.addEventListener('progress', function(event) {
9693		if (!event.lengthComputable)
9694		{
9695			return;
9696		}
9697		_elm_lang$core$Native_Scheduler.rawSpawn(maybeProgress._0({
9698			bytes: event.loaded,
9699			bytesExpected: event.total
9700		}));
9701	});
9702}
9703
9704function configureRequest(xhr, request)
9705{
9706	function setHeader(pair)
9707	{
9708		xhr.setRequestHeader(pair._0, pair._1);
9709	}
9710
9711	A2(_elm_lang$core$List$map, setHeader, request.headers);
9712	xhr.responseType = request.expect.responseType;
9713	xhr.withCredentials = request.withCredentials;
9714
9715	if (request.timeout.ctor === 'Just')
9716	{
9717		xhr.timeout = request.timeout._0;
9718	}
9719}
9720
9721function send(xhr, body)
9722{
9723	switch (body.ctor)
9724	{
9725		case 'EmptyBody':
9726			xhr.send();
9727			return;
9728
9729		case 'StringBody':
9730			xhr.setRequestHeader('Content-Type', body._0);
9731			xhr.send(body._1);
9732			return;
9733
9734		case 'FormDataBody':
9735			xhr.send(body._0);
9736			return;
9737	}
9738}
9739
9740
9741// RESPONSES
9742
9743function handleResponse(xhr, responseToResult)
9744{
9745	var response = toResponse(xhr);
9746
9747	if (xhr.status < 200 || 300 <= xhr.status)
9748	{
9749		response.body = xhr.responseText;
9750		return _elm_lang$core$Native_Scheduler.fail({
9751			ctor: 'BadStatus',
9752			_0: response
9753		});
9754	}
9755
9756	var result = responseToResult(response);
9757
9758	if (result.ctor === 'Ok')
9759	{
9760		return _elm_lang$core$Native_Scheduler.succeed(result._0);
9761	}
9762	else
9763	{
9764		response.body = xhr.responseText;
9765		return _elm_lang$core$Native_Scheduler.fail({
9766			ctor: 'BadPayload',
9767			_0: result._0,
9768			_1: response
9769		});
9770	}
9771}
9772
9773function toResponse(xhr)
9774{
9775	return {
9776		status: { code: xhr.status, message: xhr.statusText },
9777		headers: parseHeaders(xhr.getAllResponseHeaders()),
9778		url: xhr.responseURL,
9779		body: xhr.response
9780	};
9781}
9782
9783function parseHeaders(rawHeaders)
9784{
9785	var headers = _elm_lang$core$Dict$empty;
9786
9787	if (!rawHeaders)
9788	{
9789		return headers;
9790	}
9791
9792	var headerPairs = rawHeaders.split('\u000d\u000a');
9793	for (var i = headerPairs.length; i--; )
9794	{
9795		var headerPair = headerPairs[i];
9796		var index = headerPair.indexOf('\u003a\u0020');
9797		if (index > 0)
9798		{
9799			var key = headerPair.substring(0, index);
9800			var value = headerPair.substring(index + 2);
9801
9802			headers = A3(_elm_lang$core$Dict$update, key, function(oldValue) {
9803				if (oldValue.ctor === 'Just')
9804				{
9805					return _elm_lang$core$Maybe$Just(value + ', ' + oldValue._0);
9806				}
9807				return _elm_lang$core$Maybe$Just(value);
9808			}, headers);
9809		}
9810	}
9811
9812	return headers;
9813}
9814
9815
9816// EXPECTORS
9817
9818function expectStringResponse(responseToResult)
9819{
9820	return {
9821		responseType: 'text',
9822		responseToResult: responseToResult
9823	};
9824}
9825
9826function mapExpect(func, expect)
9827{
9828	return {
9829		responseType: expect.responseType,
9830		responseToResult: function(response) {
9831			var convertedResponse = expect.responseToResult(response);
9832			return A2(_elm_lang$core$Result$map, func, convertedResponse);
9833		}
9834	};
9835}
9836
9837
9838// BODY
9839
9840function multipart(parts)
9841{
9842	var formData = new FormData();
9843
9844	while (parts.ctor !== '[]')
9845	{
9846		var part = parts._0;
9847		formData.append(part._0, part._1);
9848		parts = parts._1;
9849	}
9850
9851	return { ctor: 'FormDataBody', _0: formData };
9852}
9853
9854return {
9855	toTask: F2(toTask),
9856	expectStringResponse: expectStringResponse,
9857	mapExpect: F2(mapExpect),
9858	multipart: multipart,
9859	encodeUri: encodeUri,
9860	decodeUri: decodeUri
9861};
9862
9863}();
9864
9865var _elm_lang$http$Http_Internal$map = F2(
9866	function (func, request) {
9867		return _elm_lang$core$Native_Utils.update(
9868			request,
9869			{
9870				expect: A2(_elm_lang$http$Native_Http.mapExpect, func, request.expect)
9871			});
9872	});
9873var _elm_lang$http$Http_Internal$RawRequest = F7(
9874	function (a, b, c, d, e, f, g) {
9875		return {method: a, headers: b, url: c, body: d, expect: e, timeout: f, withCredentials: g};
9876	});
9877var _elm_lang$http$Http_Internal$Request = function (a) {
9878	return {ctor: 'Request', _0: a};
9879};
9880var _elm_lang$http$Http_Internal$Expect = {ctor: 'Expect'};
9881var _elm_lang$http$Http_Internal$FormDataBody = {ctor: 'FormDataBody'};
9882var _elm_lang$http$Http_Internal$StringBody = F2(
9883	function (a, b) {
9884		return {ctor: 'StringBody', _0: a, _1: b};
9885	});
9886var _elm_lang$http$Http_Internal$EmptyBody = {ctor: 'EmptyBody'};
9887var _elm_lang$http$Http_Internal$Header = F2(
9888	function (a, b) {
9889		return {ctor: 'Header', _0: a, _1: b};
9890	});
9891
9892var _elm_lang$http$Http$decodeUri = _elm_lang$http$Native_Http.decodeUri;
9893var _elm_lang$http$Http$encodeUri = _elm_lang$http$Native_Http.encodeUri;
9894var _elm_lang$http$Http$expectStringResponse = _elm_lang$http$Native_Http.expectStringResponse;
9895var _elm_lang$http$Http$expectJson = function (decoder) {
9896	return _elm_lang$http$Http$expectStringResponse(
9897		function (response) {
9898			return A2(_elm_lang$core$Json_Decode$decodeString, decoder, response.body);
9899		});
9900};
9901var _elm_lang$http$Http$expectString = _elm_lang$http$Http$expectStringResponse(
9902	function (response) {
9903		return _elm_lang$core$Result$Ok(response.body);
9904	});
9905var _elm_lang$http$Http$multipartBody = _elm_lang$http$Native_Http.multipart;
9906var _elm_lang$http$Http$stringBody = _elm_lang$http$Http_Internal$StringBody;
9907var _elm_lang$http$Http$jsonBody = function (value) {
9908	return A2(
9909		_elm_lang$http$Http_Internal$StringBody,
9910		'application/json',
9911		A2(_elm_lang$core$Json_Encode$encode, 0, value));
9912};
9913var _elm_lang$http$Http$emptyBody = _elm_lang$http$Http_Internal$EmptyBody;
9914var _elm_lang$http$Http$header = _elm_lang$http$Http_Internal$Header;
9915var _elm_lang$http$Http$request = _elm_lang$http$Http_Internal$Request;
9916var _elm_lang$http$Http$post = F3(
9917	function (url, body, decoder) {
9918		return _elm_lang$http$Http$request(
9919			{
9920				method: 'POST',
9921				headers: {ctor: '[]'},
9922				url: url,
9923				body: body,
9924				expect: _elm_lang$http$Http$expectJson(decoder),
9925				timeout: _elm_lang$core$Maybe$Nothing,
9926				withCredentials: false
9927			});
9928	});
9929var _elm_lang$http$Http$get = F2(
9930	function (url, decoder) {
9931		return _elm_lang$http$Http$request(
9932			{
9933				method: 'GET',
9934				headers: {ctor: '[]'},
9935				url: url,
9936				body: _elm_lang$http$Http$emptyBody,
9937				expect: _elm_lang$http$Http$expectJson(decoder),
9938				timeout: _elm_lang$core$Maybe$Nothing,
9939				withCredentials: false
9940			});
9941	});
9942var _elm_lang$http$Http$getString = function (url) {
9943	return _elm_lang$http$Http$request(
9944		{
9945			method: 'GET',
9946			headers: {ctor: '[]'},
9947			url: url,
9948			body: _elm_lang$http$Http$emptyBody,
9949			expect: _elm_lang$http$Http$expectString,
9950			timeout: _elm_lang$core$Maybe$Nothing,
9951			withCredentials: false
9952		});
9953};
9954var _elm_lang$http$Http$toTask = function (_p0) {
9955	var _p1 = _p0;
9956	return A2(_elm_lang$http$Native_Http.toTask, _p1._0, _elm_lang$core$Maybe$Nothing);
9957};
9958var _elm_lang$http$Http$send = F2(
9959	function (resultToMessage, request) {
9960		return A2(
9961			_elm_lang$core$Task$attempt,
9962			resultToMessage,
9963			_elm_lang$http$Http$toTask(request));
9964	});
9965var _elm_lang$http$Http$Response = F4(
9966	function (a, b, c, d) {
9967		return {url: a, status: b, headers: c, body: d};
9968	});
9969var _elm_lang$http$Http$BadPayload = F2(
9970	function (a, b) {
9971		return {ctor: 'BadPayload', _0: a, _1: b};
9972	});
9973var _elm_lang$http$Http$BadStatus = function (a) {
9974	return {ctor: 'BadStatus', _0: a};
9975};
9976var _elm_lang$http$Http$NetworkError = {ctor: 'NetworkError'};
9977var _elm_lang$http$Http$Timeout = {ctor: 'Timeout'};
9978var _elm_lang$http$Http$BadUrl = function (a) {
9979	return {ctor: 'BadUrl', _0: a};
9980};
9981var _elm_lang$http$Http$StringPart = F2(
9982	function (a, b) {
9983		return {ctor: 'StringPart', _0: a, _1: b};
9984	});
9985var _elm_lang$http$Http$stringPart = _elm_lang$http$Http$StringPart;
9986
9987var _elm_lang$mouse$Mouse_ops = _elm_lang$mouse$Mouse_ops || {};
9988_elm_lang$mouse$Mouse_ops['&>'] = F2(
9989	function (t1, t2) {
9990		return A2(
9991			_elm_lang$core$Task$andThen,
9992			function (_p0) {
9993				return t2;
9994			},
9995			t1);
9996	});
9997var _elm_lang$mouse$Mouse$onSelfMsg = F3(
9998	function (router, _p1, state) {
9999		var _p2 = _p1;
10000		var _p3 = A2(_elm_lang$core$Dict$get, _p2.category, state);
10001		if (_p3.ctor === 'Nothing') {
10002			return _elm_lang$core$Task$succeed(state);
10003		} else {
10004			var send = function (tagger) {
10005				return A2(
10006					_elm_lang$core$Platform$sendToApp,
10007					router,
10008					tagger(_p2.position));
10009			};
10010			return A2(
10011				_elm_lang$mouse$Mouse_ops['&>'],
10012				_elm_lang$core$Task$sequence(
10013					A2(_elm_lang$core$List$map, send, _p3._0.taggers)),
10014				_elm_lang$core$Task$succeed(state));
10015		}
10016	});
10017var _elm_lang$mouse$Mouse$init = _elm_lang$core$Task$succeed(_elm_lang$core$Dict$empty);
10018var _elm_lang$mouse$Mouse$categorizeHelpHelp = F2(
10019	function (value, maybeValues) {
10020		var _p4 = maybeValues;
10021		if (_p4.ctor === 'Nothing') {
10022			return _elm_lang$core$Maybe$Just(
10023				{
10024					ctor: '::',
10025					_0: value,
10026					_1: {ctor: '[]'}
10027				});
10028		} else {
10029			return _elm_lang$core$Maybe$Just(
10030				{ctor: '::', _0: value, _1: _p4._0});
10031		}
10032	});
10033var _elm_lang$mouse$Mouse$categorizeHelp = F2(
10034	function (subs, subDict) {
10035		categorizeHelp:
10036		while (true) {
10037			var _p5 = subs;
10038			if (_p5.ctor === '[]') {
10039				return subDict;
10040			} else {
10041				var _v4 = _p5._1,
10042					_v5 = A3(
10043					_elm_lang$core$Dict$update,
10044					_p5._0._0,
10045					_elm_lang$mouse$Mouse$categorizeHelpHelp(_p5._0._1),
10046					subDict);
10047				subs = _v4;
10048				subDict = _v5;
10049				continue categorizeHelp;
10050			}
10051		}
10052	});
10053var _elm_lang$mouse$Mouse$categorize = function (subs) {
10054	return A2(_elm_lang$mouse$Mouse$categorizeHelp, subs, _elm_lang$core$Dict$empty);
10055};
10056var _elm_lang$mouse$Mouse$subscription = _elm_lang$core$Native_Platform.leaf('Mouse');
10057var _elm_lang$mouse$Mouse$Position = F2(
10058	function (a, b) {
10059		return {x: a, y: b};
10060	});
10061var _elm_lang$mouse$Mouse$position = A3(
10062	_elm_lang$core$Json_Decode$map2,
10063	_elm_lang$mouse$Mouse$Position,
10064	A2(_elm_lang$core$Json_Decode$field, 'pageX', _elm_lang$core$Json_Decode$int),
10065	A2(_elm_lang$core$Json_Decode$field, 'pageY', _elm_lang$core$Json_Decode$int));
10066var _elm_lang$mouse$Mouse$Watcher = F2(
10067	function (a, b) {
10068		return {taggers: a, pid: b};
10069	});
10070var _elm_lang$mouse$Mouse$Msg = F2(
10071	function (a, b) {
10072		return {category: a, position: b};
10073	});
10074var _elm_lang$mouse$Mouse$onEffects = F3(
10075	function (router, newSubs, oldState) {
10076		var rightStep = F3(
10077			function (category, taggers, task) {
10078				var tracker = A3(
10079					_elm_lang$dom$Dom_LowLevel$onDocument,
10080					category,
10081					_elm_lang$mouse$Mouse$position,
10082					function (_p6) {
10083						return A2(
10084							_elm_lang$core$Platform$sendToSelf,
10085							router,
10086							A2(_elm_lang$mouse$Mouse$Msg, category, _p6));
10087					});
10088				return A2(
10089					_elm_lang$core$Task$andThen,
10090					function (state) {
10091						return A2(
10092							_elm_lang$core$Task$andThen,
10093							function (pid) {
10094								return _elm_lang$core$Task$succeed(
10095									A3(
10096										_elm_lang$core$Dict$insert,
10097										category,
10098										A2(_elm_lang$mouse$Mouse$Watcher, taggers, pid),
10099										state));
10100							},
10101							_elm_lang$core$Process$spawn(tracker));
10102					},
10103					task);
10104			});
10105		var bothStep = F4(
10106			function (category, _p7, taggers, task) {
10107				var _p8 = _p7;
10108				return A2(
10109					_elm_lang$core$Task$andThen,
10110					function (state) {
10111						return _elm_lang$core$Task$succeed(
10112							A3(
10113								_elm_lang$core$Dict$insert,
10114								category,
10115								A2(_elm_lang$mouse$Mouse$Watcher, taggers, _p8.pid),
10116								state));
10117					},
10118					task);
10119			});
10120		var leftStep = F3(
10121			function (category, _p9, task) {
10122				var _p10 = _p9;
10123				return A2(
10124					_elm_lang$mouse$Mouse_ops['&>'],
10125					_elm_lang$core$Process$kill(_p10.pid),
10126					task);
10127			});
10128		return A6(
10129			_elm_lang$core$Dict$merge,
10130			leftStep,
10131			bothStep,
10132			rightStep,
10133			oldState,
10134			_elm_lang$mouse$Mouse$categorize(newSubs),
10135			_elm_lang$core$Task$succeed(_elm_lang$core$Dict$empty));
10136	});
10137var _elm_lang$mouse$Mouse$MySub = F2(
10138	function (a, b) {
10139		return {ctor: 'MySub', _0: a, _1: b};
10140	});
10141var _elm_lang$mouse$Mouse$clicks = function (tagger) {
10142	return _elm_lang$mouse$Mouse$subscription(
10143		A2(_elm_lang$mouse$Mouse$MySub, 'click', tagger));
10144};
10145var _elm_lang$mouse$Mouse$moves = function (tagger) {
10146	return _elm_lang$mouse$Mouse$subscription(
10147		A2(_elm_lang$mouse$Mouse$MySub, 'mousemove', tagger));
10148};
10149var _elm_lang$mouse$Mouse$downs = function (tagger) {
10150	return _elm_lang$mouse$Mouse$subscription(
10151		A2(_elm_lang$mouse$Mouse$MySub, 'mousedown', tagger));
10152};
10153var _elm_lang$mouse$Mouse$ups = function (tagger) {
10154	return _elm_lang$mouse$Mouse$subscription(
10155		A2(_elm_lang$mouse$Mouse$MySub, 'mouseup', tagger));
10156};
10157var _elm_lang$mouse$Mouse$subMap = F2(
10158	function (func, _p11) {
10159		var _p12 = _p11;
10160		return A2(
10161			_elm_lang$mouse$Mouse$MySub,
10162			_p12._0,
10163			function (_p13) {
10164				return func(
10165					_p12._1(_p13));
10166			});
10167	});
10168_elm_lang$core$Native_Platform.effectManagers['Mouse'] = {pkg: 'elm-lang/mouse', init: _elm_lang$mouse$Mouse$init, onEffects: _elm_lang$mouse$Mouse$onEffects, onSelfMsg: _elm_lang$mouse$Mouse$onSelfMsg, tag: 'sub', subMap: _elm_lang$mouse$Mouse$subMap};
10169
10170var _elm_lang$navigation$Native_Navigation = function() {
10171
10172
10173// FAKE NAVIGATION
10174
10175function go(n)
10176{
10177	return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)
10178	{
10179		if (n !== 0)
10180		{
10181			history.go(n);
10182		}
10183		callback(_elm_lang$core$Native_Scheduler.succeed(_elm_lang$core$Native_Utils.Tuple0));
10184	});
10185}
10186
10187function pushState(url)
10188{
10189	return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)
10190	{
10191		history.pushState({}, '', url);
10192		callback(_elm_lang$core$Native_Scheduler.succeed(getLocation()));
10193	});
10194}
10195
10196function replaceState(url)
10197{
10198	return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)
10199	{
10200		history.replaceState({}, '', url);
10201		callback(_elm_lang$core$Native_Scheduler.succeed(getLocation()));
10202	});
10203}
10204
10205
10206// REAL NAVIGATION
10207
10208function reloadPage(skipCache)
10209{
10210	return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)
10211	{
10212		document.location.reload(skipCache);
10213		callback(_elm_lang$core$Native_Scheduler.succeed(_elm_lang$core$Native_Utils.Tuple0));
10214	});
10215}
10216
10217function setLocation(url)
10218{
10219	return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)
10220	{
10221		try
10222		{
10223			window.location = url;
10224		}
10225		catch(err)
10226		{
10227			// Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here.
10228			// Other browsers reload the page, so let's be consistent about that.
10229			document.location.reload(false);
10230		}
10231		callback(_elm_lang$core$Native_Scheduler.succeed(_elm_lang$core$Native_Utils.Tuple0));
10232	});
10233}
10234
10235
10236// GET LOCATION
10237
10238function getLocation()
10239{
10240	var location = document.location;
10241
10242	return {
10243		href: location.href,
10244		host: location.host,
10245		hostname: location.hostname,
10246		protocol: location.protocol,
10247		origin: location.origin,
10248		port_: location.port,
10249		pathname: location.pathname,
10250		search: location.search,
10251		hash: location.hash,
10252		username: location.username,
10253		password: location.password
10254	};
10255}
10256
10257
10258// DETECT IE11 PROBLEMS
10259
10260function isInternetExplorer11()
10261{
10262	return window.navigator.userAgent.indexOf('Trident') !== -1;
10263}
10264
10265
10266return {
10267	go: go,
10268	setLocation: setLocation,
10269	reloadPage: reloadPage,
10270	pushState: pushState,
10271	replaceState: replaceState,
10272	getLocation: getLocation,
10273	isInternetExplorer11: isInternetExplorer11
10274};
10275
10276}();
10277
10278var _elm_lang$navigation$Navigation$replaceState = _elm_lang$navigation$Native_Navigation.replaceState;
10279var _elm_lang$navigation$Navigation$pushState = _elm_lang$navigation$Native_Navigation.pushState;
10280var _elm_lang$navigation$Navigation$go = _elm_lang$navigation$Native_Navigation.go;
10281var _elm_lang$navigation$Navigation$reloadPage = _elm_lang$navigation$Native_Navigation.reloadPage;
10282var _elm_lang$navigation$Navigation$setLocation = _elm_lang$navigation$Native_Navigation.setLocation;
10283var _elm_lang$navigation$Navigation_ops = _elm_lang$navigation$Navigation_ops || {};
10284_elm_lang$navigation$Navigation_ops['&>'] = F2(
10285	function (task1, task2) {
10286		return A2(
10287			_elm_lang$core$Task$andThen,
10288			function (_p0) {
10289				return task2;
10290			},
10291			task1);
10292	});
10293var _elm_lang$navigation$Navigation$notify = F3(
10294	function (router, subs, location) {
10295		var send = function (_p1) {
10296			var _p2 = _p1;
10297			return A2(
10298				_elm_lang$core$Platform$sendToApp,
10299				router,
10300				_p2._0(location));
10301		};
10302		return A2(
10303			_elm_lang$navigation$Navigation_ops['&>'],
10304			_elm_lang$core$Task$sequence(
10305				A2(_elm_lang$core$List$map, send, subs)),
10306			_elm_lang$core$Task$succeed(
10307				{ctor: '_Tuple0'}));
10308	});
10309var _elm_lang$navigation$Navigation$cmdHelp = F3(
10310	function (router, subs, cmd) {
10311		var _p3 = cmd;
10312		switch (_p3.ctor) {
10313			case 'Jump':
10314				return _elm_lang$navigation$Navigation$go(_p3._0);
10315			case 'New':
10316				return A2(
10317					_elm_lang$core$Task$andThen,
10318					A2(_elm_lang$navigation$Navigation$notify, router, subs),
10319					_elm_lang$navigation$Navigation$pushState(_p3._0));
10320			case 'Modify':
10321				return A2(
10322					_elm_lang$core$Task$andThen,
10323					A2(_elm_lang$navigation$Navigation$notify, router, subs),
10324					_elm_lang$navigation$Navigation$replaceState(_p3._0));
10325			case 'Visit':
10326				return _elm_lang$navigation$Navigation$setLocation(_p3._0);
10327			default:
10328				return _elm_lang$navigation$Navigation$reloadPage(_p3._0);
10329		}
10330	});
10331var _elm_lang$navigation$Navigation$killPopWatcher = function (popWatcher) {
10332	var _p4 = popWatcher;
10333	if (_p4.ctor === 'Normal') {
10334		return _elm_lang$core$Process$kill(_p4._0);
10335	} else {
10336		return A2(
10337			_elm_lang$navigation$Navigation_ops['&>'],
10338			_elm_lang$core$Process$kill(_p4._0),
10339			_elm_lang$core$Process$kill(_p4._1));
10340	}
10341};
10342var _elm_lang$navigation$Navigation$onSelfMsg = F3(
10343	function (router, location, state) {
10344		return A2(
10345			_elm_lang$navigation$Navigation_ops['&>'],
10346			A3(_elm_lang$navigation$Navigation$notify, router, state.subs, location),
10347			_elm_lang$core$Task$succeed(state));
10348	});
10349var _elm_lang$navigation$Navigation$subscription = _elm_lang$core$Native_Platform.leaf('Navigation');
10350var _elm_lang$navigation$Navigation$command = _elm_lang$core$Native_Platform.leaf('Navigation');
10351var _elm_lang$navigation$Navigation$Location = function (a) {
10352	return function (b) {
10353		return function (c) {
10354			return function (d) {
10355				return function (e) {
10356					return function (f) {
10357						return function (g) {
10358							return function (h) {
10359								return function (i) {
10360									return function (j) {
10361										return function (k) {
10362											return {href: a, host: b, hostname: c, protocol: d, origin: e, port_: f, pathname: g, search: h, hash: i, username: j, password: k};
10363										};
10364									};
10365								};
10366							};
10367						};
10368					};
10369				};
10370			};
10371		};
10372	};
10373};
10374var _elm_lang$navigation$Navigation$State = F2(
10375	function (a, b) {
10376		return {subs: a, popWatcher: b};
10377	});
10378var _elm_lang$navigation$Navigation$init = _elm_lang$core$Task$succeed(
10379	A2(
10380		_elm_lang$navigation$Navigation$State,
10381		{ctor: '[]'},
10382		_elm_lang$core$Maybe$Nothing));
10383var _elm_lang$navigation$Navigation$Reload = function (a) {
10384	return {ctor: 'Reload', _0: a};
10385};
10386var _elm_lang$navigation$Navigation$reload = _elm_lang$navigation$Navigation$command(
10387	_elm_lang$navigation$Navigation$Reload(false));
10388var _elm_lang$navigation$Navigation$reloadAndSkipCache = _elm_lang$navigation$Navigation$command(
10389	_elm_lang$navigation$Navigation$Reload(true));
10390var _elm_lang$navigation$Navigation$Visit = function (a) {
10391	return {ctor: 'Visit', _0: a};
10392};
10393var _elm_lang$navigation$Navigation$load = function (url) {
10394	return _elm_lang$navigation$Navigation$command(
10395		_elm_lang$navigation$Navigation$Visit(url));
10396};
10397var _elm_lang$navigation$Navigation$Modify = function (a) {
10398	return {ctor: 'Modify', _0: a};
10399};
10400var _elm_lang$navigation$Navigation$modifyUrl = function (url) {
10401	return _elm_lang$navigation$Navigation$command(
10402		_elm_lang$navigation$Navigation$Modify(url));
10403};
10404var _elm_lang$navigation$Navigation$New = function (a) {
10405	return {ctor: 'New', _0: a};
10406};
10407var _elm_lang$navigation$Navigation$newUrl = function (url) {
10408	return _elm_lang$navigation$Navigation$command(
10409		_elm_lang$navigation$Navigation$New(url));
10410};
10411var _elm_lang$navigation$Navigation$Jump = function (a) {
10412	return {ctor: 'Jump', _0: a};
10413};
10414var _elm_lang$navigation$Navigation$back = function (n) {
10415	return _elm_lang$navigation$Navigation$command(
10416		_elm_lang$navigation$Navigation$Jump(0 - n));
10417};
10418var _elm_lang$navigation$Navigation$forward = function (n) {
10419	return _elm_lang$navigation$Navigation$command(
10420		_elm_lang$navigation$Navigation$Jump(n));
10421};
10422var _elm_lang$navigation$Navigation$cmdMap = F2(
10423	function (_p5, myCmd) {
10424		var _p6 = myCmd;
10425		switch (_p6.ctor) {
10426			case 'Jump':
10427				return _elm_lang$navigation$Navigation$Jump(_p6._0);
10428			case 'New':
10429				return _elm_lang$navigation$Navigation$New(_p6._0);
10430			case 'Modify':
10431				return _elm_lang$navigation$Navigation$Modify(_p6._0);
10432			case 'Visit':
10433				return _elm_lang$navigation$Navigation$Visit(_p6._0);
10434			default:
10435				return _elm_lang$navigation$Navigation$Reload(_p6._0);
10436		}
10437	});
10438var _elm_lang$navigation$Navigation$Monitor = function (a) {
10439	return {ctor: 'Monitor', _0: a};
10440};
10441var _elm_lang$navigation$Navigation$program = F2(
10442	function (locationToMessage, stuff) {
10443		var init = stuff.init(
10444			_elm_lang$navigation$Native_Navigation.getLocation(
10445				{ctor: '_Tuple0'}));
10446		var subs = function (model) {
10447			return _elm_lang$core$Platform_Sub$batch(
10448				{
10449					ctor: '::',
10450					_0: _elm_lang$navigation$Navigation$subscription(
10451						_elm_lang$navigation$Navigation$Monitor(locationToMessage)),
10452					_1: {
10453						ctor: '::',
10454						_0: stuff.subscriptions(model),
10455						_1: {ctor: '[]'}
10456					}
10457				});
10458		};
10459		return _elm_lang$html$Html$program(
10460			{init: init, view: stuff.view, update: stuff.update, subscriptions: subs});
10461	});
10462var _elm_lang$navigation$Navigation$programWithFlags = F2(
10463	function (locationToMessage, stuff) {
10464		var init = function (flags) {
10465			return A2(
10466				stuff.init,
10467				flags,
10468				_elm_lang$navigation$Native_Navigation.getLocation(
10469					{ctor: '_Tuple0'}));
10470		};
10471		var subs = function (model) {
10472			return _elm_lang$core$Platform_Sub$batch(
10473				{
10474					ctor: '::',
10475					_0: _elm_lang$navigation$Navigation$subscription(
10476						_elm_lang$navigation$Navigation$Monitor(locationToMessage)),
10477					_1: {
10478						ctor: '::',
10479						_0: stuff.subscriptions(model),
10480						_1: {ctor: '[]'}
10481					}
10482				});
10483		};
10484		return _elm_lang$html$Html$programWithFlags(
10485			{init: init, view: stuff.view, update: stuff.update, subscriptions: subs});
10486	});
10487var _elm_lang$navigation$Navigation$subMap = F2(
10488	function (func, _p7) {
10489		var _p8 = _p7;
10490		return _elm_lang$navigation$Navigation$Monitor(
10491			function (_p9) {
10492				return func(
10493					_p8._0(_p9));
10494			});
10495	});
10496var _elm_lang$navigation$Navigation$InternetExplorer = F2(
10497	function (a, b) {
10498		return {ctor: 'InternetExplorer', _0: a, _1: b};
10499	});
10500var _elm_lang$navigation$Navigation$Normal = function (a) {
10501	return {ctor: 'Normal', _0: a};
10502};
10503var _elm_lang$navigation$Navigation$spawnPopWatcher = function (router) {
10504	var reportLocation = function (_p10) {
10505		return A2(
10506			_elm_lang$core$Platform$sendToSelf,
10507			router,
10508			_elm_lang$navigation$Native_Navigation.getLocation(
10509				{ctor: '_Tuple0'}));
10510	};
10511	return _elm_lang$navigation$Native_Navigation.isInternetExplorer11(
10512		{ctor: '_Tuple0'}) ? A3(
10513		_elm_lang$core$Task$map2,
10514		_elm_lang$navigation$Navigation$InternetExplorer,
10515		_elm_lang$core$Process$spawn(
10516			A3(_elm_lang$dom$Dom_LowLevel$onWindow, 'popstate', _elm_lang$core$Json_Decode$value, reportLocation)),
10517		_elm_lang$core$Process$spawn(
10518			A3(_elm_lang$dom$Dom_LowLevel$onWindow, 'hashchange', _elm_lang$core$Json_Decode$value, reportLocation))) : A2(
10519		_elm_lang$core$Task$map,
10520		_elm_lang$navigation$Navigation$Normal,
10521		_elm_lang$core$Process$spawn(
10522			A3(_elm_lang$dom$Dom_LowLevel$onWindow, 'popstate', _elm_lang$core$Json_Decode$value, reportLocation)));
10523};
10524var _elm_lang$navigation$Navigation$onEffects = F4(
10525	function (router, cmds, subs, _p11) {
10526		var _p12 = _p11;
10527		var _p15 = _p12.popWatcher;
10528		var stepState = function () {
10529			var _p13 = {ctor: '_Tuple2', _0: subs, _1: _p15};
10530			_v6_2:
10531			do {
10532				if (_p13._0.ctor === '[]') {
10533					if (_p13._1.ctor === 'Just') {
10534						return A2(
10535							_elm_lang$navigation$Navigation_ops['&>'],
10536							_elm_lang$navigation$Navigation$killPopWatcher(_p13._1._0),
10537							_elm_lang$core$Task$succeed(
10538								A2(_elm_lang$navigation$Navigation$State, subs, _elm_lang$core$Maybe$Nothing)));
10539					} else {
10540						break _v6_2;
10541					}
10542				} else {
10543					if (_p13._1.ctor === 'Nothing') {
10544						return A2(
10545							_elm_lang$core$Task$map,
10546							function (_p14) {
10547								return A2(
10548									_elm_lang$navigation$Navigation$State,
10549									subs,
10550									_elm_lang$core$Maybe$Just(_p14));
10551							},
10552							_elm_lang$navigation$Navigation$spawnPopWatcher(router));
10553					} else {
10554						break _v6_2;
10555					}
10556				}
10557			} while(false);
10558			return _elm_lang$core$Task$succeed(
10559				A2(_elm_lang$navigation$Navigation$State, subs, _p15));
10560		}();
10561		return A2(
10562			_elm_lang$navigation$Navigation_ops['&>'],
10563			_elm_lang$core$Task$sequence(
10564				A2(
10565					_elm_lang$core$List$map,
10566					A2(_elm_lang$navigation$Navigation$cmdHelp, router, subs),
10567					cmds)),
10568			stepState);
10569	});
10570_elm_lang$core$Native_Platform.effectManagers['Navigation'] = {pkg: 'elm-lang/navigation', init: _elm_lang$navigation$Navigation$init, onEffects: _elm_lang$navigation$Navigation$onEffects, onSelfMsg: _elm_lang$navigation$Navigation$onSelfMsg, tag: 'fx', cmdMap: _elm_lang$navigation$Navigation$cmdMap, subMap: _elm_lang$navigation$Navigation$subMap};
10571
10572var _elm_lang$window$Native_Window = function()
10573{
10574
10575var size = _elm_lang$core$Native_Scheduler.nativeBinding(function(callback)	{
10576	callback(_elm_lang$core$Native_Scheduler.succeed({
10577		width: window.innerWidth,
10578		height: window.innerHeight
10579	}));
10580});
10581
10582return {
10583	size: size
10584};
10585
10586}();
10587var _elm_lang$window$Window_ops = _elm_lang$window$Window_ops || {};
10588_elm_lang$window$Window_ops['&>'] = F2(
10589	function (task1, task2) {
10590		return A2(
10591			_elm_lang$core$Task$andThen,
10592			function (_p0) {
10593				return task2;
10594			},
10595			task1);
10596	});
10597var _elm_lang$window$Window$onSelfMsg = F3(
10598	function (router, dimensions, state) {
10599		var _p1 = state;
10600		if (_p1.ctor === 'Nothing') {
10601			return _elm_lang$core$Task$succeed(state);
10602		} else {
10603			var send = function (_p2) {
10604				var _p3 = _p2;
10605				return A2(
10606					_elm_lang$core$Platform$sendToApp,
10607					router,
10608					_p3._0(dimensions));
10609			};
10610			return A2(
10611				_elm_lang$window$Window_ops['&>'],
10612				_elm_lang$core$Task$sequence(
10613					A2(_elm_lang$core$List$map, send, _p1._0.subs)),
10614				_elm_lang$core$Task$succeed(state));
10615		}
10616	});
10617var _elm_lang$window$Window$init = _elm_lang$core$Task$succeed(_elm_lang$core$Maybe$Nothing);
10618var _elm_lang$window$Window$size = _elm_lang$window$Native_Window.size;
10619var _elm_lang$window$Window$width = A2(
10620	_elm_lang$core$Task$map,
10621	function (_) {
10622		return _.width;
10623	},
10624	_elm_lang$window$Window$size);
10625var _elm_lang$window$Window$height = A2(
10626	_elm_lang$core$Task$map,
10627	function (_) {
10628		return _.height;
10629	},
10630	_elm_lang$window$Window$size);
10631var _elm_lang$window$Window$onEffects = F3(
10632	function (router, newSubs, oldState) {
10633		var _p4 = {ctor: '_Tuple2', _0: oldState, _1: newSubs};
10634		if (_p4._0.ctor === 'Nothing') {
10635			if (_p4._1.ctor === '[]') {
10636				return _elm_lang$core$Task$succeed(_elm_lang$core$Maybe$Nothing);
10637			} else {
10638				return A2(
10639					_elm_lang$core$Task$andThen,
10640					function (pid) {
10641						return _elm_lang$core$Task$succeed(
10642							_elm_lang$core$Maybe$Just(
10643								{subs: newSubs, pid: pid}));
10644					},
10645					_elm_lang$core$Process$spawn(
10646						A3(
10647							_elm_lang$dom$Dom_LowLevel$onWindow,
10648							'resize',
10649							_elm_lang$core$Json_Decode$succeed(
10650								{ctor: '_Tuple0'}),
10651							function (_p5) {
10652								return A2(
10653									_elm_lang$core$Task$andThen,
10654									_elm_lang$core$Platform$sendToSelf(router),
10655									_elm_lang$window$Window$size);
10656							})));
10657			}
10658		} else {
10659			if (_p4._1.ctor === '[]') {
10660				return A2(
10661					_elm_lang$window$Window_ops['&>'],
10662					_elm_lang$core$Process$kill(_p4._0._0.pid),
10663					_elm_lang$core$Task$succeed(_elm_lang$core$Maybe$Nothing));
10664			} else {
10665				return _elm_lang$core$Task$succeed(
10666					_elm_lang$core$Maybe$Just(
10667						{subs: newSubs, pid: _p4._0._0.pid}));
10668			}
10669		}
10670	});
10671var _elm_lang$window$Window$subscription = _elm_lang$core$Native_Platform.leaf('Window');
10672var _elm_lang$window$Window$Size = F2(
10673	function (a, b) {
10674		return {width: a, height: b};
10675	});
10676var _elm_lang$window$Window$MySub = function (a) {
10677	return {ctor: 'MySub', _0: a};
10678};
10679var _elm_lang$window$Window$resizes = function (tagger) {
10680	return _elm_lang$window$Window$subscription(
10681		_elm_lang$window$Window$MySub(tagger));
10682};
10683var _elm_lang$window$Window$subMap = F2(
10684	function (func, _p6) {
10685		var _p7 = _p6;
10686		return _elm_lang$window$Window$MySub(
10687			function (_p8) {
10688				return func(
10689					_p7._0(_p8));
10690			});
10691	});
10692_elm_lang$core$Native_Platform.effectManagers['Window'] = {pkg: 'elm-lang/window', init: _elm_lang$window$Window$init, onEffects: _elm_lang$window$Window$onEffects, onSelfMsg: _elm_lang$window$Window$onSelfMsg, tag: 'sub', subMap: _elm_lang$window$Window$subMap};
10693
10694var _rundis$elm_bootstrap$Bootstrap_General_Internal$screenSizeOption = function (size) {
10695	var _p0 = size;
10696	switch (_p0.ctor) {
10697		case 'XS':
10698			return _elm_lang$core$Maybe$Nothing;
10699		case 'SM':
10700			return _elm_lang$core$Maybe$Just('sm');
10701		case 'MD':
10702			return _elm_lang$core$Maybe$Just('md');
10703		case 'LG':
10704			return _elm_lang$core$Maybe$Just('lg');
10705		default:
10706			return _elm_lang$core$Maybe$Just('xl');
10707	}
10708};
10709var _rundis$elm_bootstrap$Bootstrap_General_Internal$horizontalAlignOption = function (align) {
10710	var _p1 = align;
10711	switch (_p1.ctor) {
10712		case 'Left':
10713			return 'start';
10714		case 'Center':
10715			return 'center';
10716		case 'Right':
10717			return 'end';
10718		case 'Around':
10719			return 'around';
10720		default:
10721			return 'between';
10722	}
10723};
10724var _rundis$elm_bootstrap$Bootstrap_General_Internal$hAlignClass = function (_p2) {
10725	var _p3 = _p2;
10726	return _elm_lang$html$Html_Attributes$class(
10727		A2(
10728			_elm_lang$core$Basics_ops['++'],
10729			'justify-content-',
10730			A2(
10731				_elm_lang$core$Basics_ops['++'],
10732				A2(
10733					_elm_lang$core$Maybe$withDefault,
10734					'',
10735					A2(
10736						_elm_lang$core$Maybe$map,
10737						function (v) {
10738							return A2(_elm_lang$core$Basics_ops['++'], v, '-');
10739						},
10740						_rundis$elm_bootstrap$Bootstrap_General_Internal$screenSizeOption(_p3.screenSize))),
10741				_rundis$elm_bootstrap$Bootstrap_General_Internal$horizontalAlignOption(_p3.align))));
10742};
10743var _rundis$elm_bootstrap$Bootstrap_General_Internal$HAlign = F2(
10744	function (a, b) {
10745		return {screenSize: a, align: b};
10746	});
10747var _rundis$elm_bootstrap$Bootstrap_General_Internal$Between = {ctor: 'Between'};
10748var _rundis$elm_bootstrap$Bootstrap_General_Internal$Around = {ctor: 'Around'};
10749var _rundis$elm_bootstrap$Bootstrap_General_Internal$Right = {ctor: 'Right'};
10750var _rundis$elm_bootstrap$Bootstrap_General_Internal$Center = {ctor: 'Center'};
10751var _rundis$elm_bootstrap$Bootstrap_General_Internal$Left = {ctor: 'Left'};
10752var _rundis$elm_bootstrap$Bootstrap_General_Internal$XL = {ctor: 'XL'};
10753var _rundis$elm_bootstrap$Bootstrap_General_Internal$LG = {ctor: 'LG'};
10754var _rundis$elm_bootstrap$Bootstrap_General_Internal$MD = {ctor: 'MD'};
10755var _rundis$elm_bootstrap$Bootstrap_General_Internal$SM = {ctor: 'SM'};
10756var _rundis$elm_bootstrap$Bootstrap_General_Internal$XS = {ctor: 'XS'};
10757
10758var _rundis$elm_bootstrap$Bootstrap_Internal_Role$toClass = F2(
10759	function (prefix, role) {
10760		return _elm_lang$html$Html_Attributes$class(
10761			A2(
10762				_elm_lang$core$Basics_ops['++'],
10763				prefix,
10764				A2(
10765					_elm_lang$core$Basics_ops['++'],
10766					'-',
10767					function () {
10768						var _p0 = role;
10769						switch (_p0.ctor) {
10770							case 'Primary':
10771								return 'primary';
10772							case 'Secondary':
10773								return 'secondary';
10774							case 'Success':
10775								return 'success';
10776							case 'Info':
10777								return 'info';
10778							case 'Warning':
10779								return 'warning';
10780							case 'Danger':
10781								return 'danger';
10782							case 'Light':
10783								return 'light';
10784							default:
10785								return 'dark';
10786						}
10787					}())));
10788	});
10789var _rundis$elm_bootstrap$Bootstrap_Internal_Role$Dark = {ctor: 'Dark'};
10790var _rundis$elm_bootstrap$Bootstrap_Internal_Role$Light = {ctor: 'Light'};
10791var _rundis$elm_bootstrap$Bootstrap_Internal_Role$Danger = {ctor: 'Danger'};
10792var _rundis$elm_bootstrap$Bootstrap_Internal_Role$Warning = {ctor: 'Warning'};
10793var _rundis$elm_bootstrap$Bootstrap_Internal_Role$Info = {ctor: 'Info'};
10794var _rundis$elm_bootstrap$Bootstrap_Internal_Role$Success = {ctor: 'Success'};
10795var _rundis$elm_bootstrap$Bootstrap_Internal_Role$Secondary = {ctor: 'Secondary'};
10796var _rundis$elm_bootstrap$Bootstrap_Internal_Role$Primary = {ctor: 'Primary'};
10797
10798var _rundis$elm_bootstrap$Bootstrap_Internal_Text$textColorClass = function (color) {
10799	var _p0 = color;
10800	if (_p0.ctor === 'White') {
10801		return _elm_lang$html$Html_Attributes$class('text-white');
10802	} else {
10803		return A2(_rundis$elm_bootstrap$Bootstrap_Internal_Role$toClass, 'text', _p0._0);
10804	}
10805};
10806var _rundis$elm_bootstrap$Bootstrap_Internal_Text$textAlignDirOption = function (dir) {
10807	var _p1 = dir;
10808	switch (_p1.ctor) {
10809		case 'Center':
10810			return 'center';
10811		case 'Left':
10812			return 'left';
10813		default:
10814			return 'right';
10815	}
10816};
10817var _rundis$elm_bootstrap$Bootstrap_Internal_Text$textAlignClass = function (_p2) {
10818	var _p3 = _p2;
10819	return _elm_lang$html$Html_Attributes$class(
10820		A2(
10821			_elm_lang$core$Basics_ops['++'],
10822			'text',
10823			A2(
10824				_elm_lang$core$Basics_ops['++'],
10825				A2(
10826					_elm_lang$core$Maybe$withDefault,
10827					'-',
10828					A2(
10829						_elm_lang$core$Maybe$map,
10830						function (s) {
10831							return A2(
10832								_elm_lang$core$Basics_ops['++'],
10833								'-',
10834								A2(_elm_lang$core$Basics_ops['++'], s, '-'));
10835						},
10836						_rundis$elm_bootstrap$Bootstrap_General_Internal$screenSizeOption(_p3.size))),
10837				_rundis$elm_bootstrap$Bootstrap_Internal_Text$textAlignDirOption(_p3.dir))));
10838};
10839var _rundis$elm_bootstrap$Bootstrap_Internal_Text$HAlign = F2(
10840	function (a, b) {
10841		return {dir: a, size: b};
10842	});
10843var _rundis$elm_bootstrap$Bootstrap_Internal_Text$Right = {ctor: 'Right'};
10844var _rundis$elm_bootstrap$Bootstrap_Internal_Text$Center = {ctor: 'Center'};
10845var _rundis$elm_bootstrap$Bootstrap_Internal_Text$Left = {ctor: 'Left'};
10846var _rundis$elm_bootstrap$Bootstrap_Internal_Text$White = {ctor: 'White'};
10847var _rundis$elm_bootstrap$Bootstrap_Internal_Text$Role = function (a) {
10848	return {ctor: 'Role', _0: a};
10849};
10850
10851var _rundis$elm_bootstrap$Bootstrap_Text$dark = _rundis$elm_bootstrap$Bootstrap_Internal_Text$Role(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Dark);
10852var _rundis$elm_bootstrap$Bootstrap_Text$light = _rundis$elm_bootstrap$Bootstrap_Internal_Text$Role(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Light);
10853var _rundis$elm_bootstrap$Bootstrap_Text$danger = _rundis$elm_bootstrap$Bootstrap_Internal_Text$Role(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Danger);
10854var _rundis$elm_bootstrap$Bootstrap_Text$warning = _rundis$elm_bootstrap$Bootstrap_Internal_Text$Role(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Warning);
10855var _rundis$elm_bootstrap$Bootstrap_Text$info = _rundis$elm_bootstrap$Bootstrap_Internal_Text$Role(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Info);
10856var _rundis$elm_bootstrap$Bootstrap_Text$success = _rundis$elm_bootstrap$Bootstrap_Internal_Text$Role(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Success);
10857var _rundis$elm_bootstrap$Bootstrap_Text$secondary = _rundis$elm_bootstrap$Bootstrap_Internal_Text$Role(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Secondary);
10858var _rundis$elm_bootstrap$Bootstrap_Text$primary = _rundis$elm_bootstrap$Bootstrap_Internal_Text$Role(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Primary);
10859var _rundis$elm_bootstrap$Bootstrap_Text$white = _rundis$elm_bootstrap$Bootstrap_Internal_Text$White;
10860var _rundis$elm_bootstrap$Bootstrap_Text$alignXl = function (dir) {
10861	return {dir: dir, size: _rundis$elm_bootstrap$Bootstrap_General_Internal$XL};
10862};
10863var _rundis$elm_bootstrap$Bootstrap_Text$alignXlRight = _rundis$elm_bootstrap$Bootstrap_Text$alignXl(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Right);
10864var _rundis$elm_bootstrap$Bootstrap_Text$alignXlCenter = _rundis$elm_bootstrap$Bootstrap_Text$alignXl(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Center);
10865var _rundis$elm_bootstrap$Bootstrap_Text$alignXlLeft = _rundis$elm_bootstrap$Bootstrap_Text$alignXl(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Left);
10866var _rundis$elm_bootstrap$Bootstrap_Text$alignLg = function (dir) {
10867	return {dir: dir, size: _rundis$elm_bootstrap$Bootstrap_General_Internal$LG};
10868};
10869var _rundis$elm_bootstrap$Bootstrap_Text$alignLgRight = _rundis$elm_bootstrap$Bootstrap_Text$alignLg(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Right);
10870var _rundis$elm_bootstrap$Bootstrap_Text$alignLgCenter = _rundis$elm_bootstrap$Bootstrap_Text$alignLg(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Center);
10871var _rundis$elm_bootstrap$Bootstrap_Text$alignLgLeft = _rundis$elm_bootstrap$Bootstrap_Text$alignLg(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Left);
10872var _rundis$elm_bootstrap$Bootstrap_Text$alignMd = function (dir) {
10873	return {dir: dir, size: _rundis$elm_bootstrap$Bootstrap_General_Internal$MD};
10874};
10875var _rundis$elm_bootstrap$Bootstrap_Text$alignMdRight = _rundis$elm_bootstrap$Bootstrap_Text$alignMd(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Right);
10876var _rundis$elm_bootstrap$Bootstrap_Text$alignMdCenter = _rundis$elm_bootstrap$Bootstrap_Text$alignMd(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Center);
10877var _rundis$elm_bootstrap$Bootstrap_Text$alignMdLeft = _rundis$elm_bootstrap$Bootstrap_Text$alignMd(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Left);
10878var _rundis$elm_bo
10878otstrap$Bootstrap_Text$alignSm = function (dir) {
10879	return {dir: dir, size: _rundis$elm_bootstrap$Bootstrap_General_Internal$SM};
10880};
10881var _rundis$elm_bootstrap$Bootstrap_Text$alignSmRight = _rundis$elm_bootstrap$Bootstrap_Text$alignSm(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Right);
10882var _rundis$elm_bootstrap$Bootstrap_Text$alignSmCenter = _rundis$elm_bootstrap$Bootstrap_Text$alignSm(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Center);
10883var _rundis$elm_bootstrap$Bootstrap_Text$alignSmLeft = _rundis$elm_bootstrap$Bootstrap_Text$alignSm(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Left);
10884var _rundis$elm_bootstrap$Bootstrap_Text$alignXs = function (dir) {
10885	return {dir: dir, size: _rundis$elm_bootstrap$Bootstrap_General_Internal$XS};
10886};
10887var _rundis$elm_bootstrap$Bootstrap_Text$alignXsRight = _rundis$elm_bootstrap$Bootstrap_Text$alignXs(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Right);
10888var _rundis$elm_bootstrap$Bootstrap_Text$alignXsCenter = _rundis$elm_bootstrap$Bootstrap_Text$alignXs(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Center);
10889var _rundis$elm_bootstrap$Bootstrap_Text$alignXsLeft = _rundis$elm_bootstrap$Bootstrap_Text$alignXs(_rundis$elm_bootstrap$Bootstrap_Internal_Text$Left);
10890
10891var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$itemAttributes = function (options) {
10892	return A2(
10893		_elm_lang$core$Basics_ops['++'],
10894		{
10895			ctor: '::',
10896			_0: _elm_lang$html$Html_Attributes$classList(
10897				{
10898					ctor: '::',
10899					_0: {ctor: '_Tuple2', _0: 'list-group-item', _1: true},
10900					_1: {
10901						ctor: '::',
10902						_0: {ctor: '_Tuple2', _0: 'disabled', _1: options.disabled},
10903						_1: {
10904							ctor: '::',
10905							_0: {ctor: '_Tuple2', _0: 'active', _1: options.active},
10906							_1: {
10907								ctor: '::',
10908								_0: {ctor: '_Tuple2', _0: 'list-group-item-action', _1: options.action},
10909								_1: {ctor: '[]'}
10910							}
10911						}
10912					}
10913				}),
10914			_1: {ctor: '[]'}
10915		},
10916		A2(
10917			_elm_lang$core$Basics_ops['++'],
10918			{
10919				ctor: '::',
10920				_0: _elm_lang$html$Html_Attributes$disabled(options.disabled),
10921				_1: {ctor: '[]'}
10922			},
10923			A2(
10924				_elm_lang$core$Basics_ops['++'],
10925				A2(
10926					_elm_lang$core$Maybe$withDefault,
10927					{ctor: '[]'},
10928					A2(
10929						_elm_lang$core$Maybe$map,
10930						function (r) {
10931							return {
10932								ctor: '::',
10933								_0: A2(_rundis$elm_bootstrap$Bootstrap_Internal_Role$toClass, 'list-group-item', r),
10934								_1: {ctor: '[]'}
10935							};
10936						},
10937						options.role)),
10938				options.attributes)));
10939};
10940var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$preventClick = A2(_elm_lang$html$Html_Attributes$attribute, 'onclick', 'var event = arguments[0] || window.event; event.preventDefault();');
10941var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$applyModifier = F2(
10942	function (modifier, options) {
10943		var _p0 = modifier;
10944		switch (_p0.ctor) {
10945			case 'Roled':
10946				return _elm_lang$core$Native_Utils.update(
10947					options,
10948					{
10949						role: _elm_lang$core$Maybe$Just(_p0._0)
10950					});
10951			case 'Action':
10952				return _elm_lang$core$Native_Utils.update(
10953					options,
10954					{action: true});
10955			case 'Disabled':
10956				return _elm_lang$core$Native_Utils.update(
10957					options,
10958					{disabled: true});
10959			case 'Active':
10960				return _elm_lang$core$Native_Utils.update(
10961					options,
10962					{active: true});
10963			default:
10964				return _elm_lang$core$Native_Utils.update(
10965					options,
10966					{
10967						attributes: A2(_elm_lang$core$Basics_ops['++'], options.attributes, _p0._0)
10968					});
10969		}
10970	});
10971var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$defaultOptions = {
10972	role: _elm_lang$core$Maybe$Nothing,
10973	active: false,
10974	disabled: false,
10975	action: false,
10976	attributes: {ctor: '[]'}
10977};
10978var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$renderCustomItem = function (_p1) {
10979	var _p2 = _p1;
10980	return A2(
10981		_p2._0.itemFn,
10982		_rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$itemAttributes(
10983			A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$applyModifier, _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$defaultOptions, _p2._0.options)),
10984		_p2._0.children);
10985};
10986var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$renderItem = function (_p3) {
10987	var _p4 = _p3;
10988	return A2(
10989		_p4._0.itemFn,
10990		_rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$itemAttributes(
10991			A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$applyModifier, _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$defaultOptions, _p4._0.options)),
10992		_p4._0.children);
10993};
10994var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$ItemOptions = F5(
10995	function (a, b, c, d, e) {
10996		return {role: a, active: b, disabled: c, action: d, attributes: e};
10997	});
10998var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Attrs = function (a) {
10999	return {ctor: 'Attrs', _0: a};
11000};
11001var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Action = {ctor: 'Action'};
11002var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Disabled = {ctor: 'Disabled'};
11003var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Active = {ctor: 'Active'};
11004var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Roled = function (a) {
11005	return {ctor: 'Roled', _0: a};
11006};
11007var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Item = function (a) {
11008	return {ctor: 'Item', _0: a};
11009};
11010var _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$CustomItem = function (a) {
11011	return {ctor: 'CustomItem', _0: a};
11012};
11013
11014var _rundis$elm_bootstrap$Bootstrap_ListGroup$attrs = function (attrs) {
11015	return _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Attrs(attrs);
11016};
11017var _rundis$elm_bootstrap$Bootstrap_ListGroup$disabled = _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Disabled;
11018var _rundis$elm_bootstrap$Bootstrap_ListGroup$active = _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Active;
11019var _rundis$elm_bootstrap$Bootstrap_ListGroup$dark = _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Dark);
11020var _rundis$elm_bootstrap$Bootstrap_ListGroup$light = _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Light);
11021var _rundis$elm_bootstrap$Bootstrap_ListGroup$danger = _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Danger);
11022var _rundis$elm_bootstrap$Bootstrap_ListGroup$warning = _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Warning);
11023var _rundis$elm_bootstrap$Bootstrap_ListGroup$info = _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Info);
11024var _rundis$elm_bootstrap$Bootstrap_ListGroup$success = _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Success);
11025var _rundis$elm_bootstrap$Bootstrap_ListGroup$secondary = _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Secondary);
11026var _rundis$elm_bootstrap$Bootstrap_ListGroup$primary = _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Primary);
11027var _rundis$elm_bootstrap$Bootstrap_ListGroup$button = F2(
11028	function (options, children) {
11029		return _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$CustomItem(
11030			{
11031				itemFn: _elm_lang$html$Html$button,
11032				children: children,
11033				options: {
11034					ctor: '::',
11035					_0: _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Action,
11036					_1: A2(
11037						_elm_lang$core$Basics_ops['++'],
11038						options,
11039						{
11040							ctor: '::',
11041							_0: _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Attrs(
11042								{
11043									ctor: '::',
11044									_0: _elm_lang$html$Html_Attributes$type_('button'),
11045									_1: {ctor: '[]'}
11046								}),
11047							_1: {ctor: '[]'}
11048						})
11049				}
11050			});
11051	});
11052var _rundis$elm_bootstrap$Bootstrap_ListGroup$anchor = F2(
11053	function (options, children) {
11054		var updOptions = A2(
11055			_elm_lang$core$List$any,
11056			F2(
11057				function (x, y) {
11058					return _elm_lang$core$Native_Utils.eq(x, y);
11059				})(_rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Disabled),
11060			options) ? A2(
11061			_elm_lang$core$Basics_ops['++'],
11062			options,
11063			{
11064				ctor: '::',
11065				_0: _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Attrs(
11066					{
11067						ctor: '::',
11068						_0: _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$preventClick,
11069						_1: {ctor: '[]'}
11070					}),
11071				_1: {ctor: '[]'}
11072			}) : options;
11073		return _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$CustomItem(
11074			{
11075				itemFn: _elm_lang$html$Html$a,
11076				children: children,
11077				options: {ctor: '::', _0: _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Action, _1: updOptions}
11078			});
11079	});
11080var _rundis$elm_bootstrap$Bootstrap_ListGroup$keyedCustom = function (items) {
11081	return A3(
11082		_elm_lang$html$Html_Keyed$node,
11083		'div',
11084		{
11085			ctor: '::',
11086			_0: _elm_lang$html$Html_Attributes$class('list-group'),
11087			_1: {ctor: '[]'}
11088		},
11089		A2(
11090			_elm_lang$core$List$map,
11091			function (_p0) {
11092				var _p1 = _p0;
11093				return {
11094					ctor: '_Tuple2',
11095					_0: _p1._0,
11096					_1: _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$renderCustomItem(_p1._1)
11097				};
11098			},
11099			items));
11100};
11101var _rundis$elm_bootstrap$Bootstrap_ListGroup$custom = function (items) {
11102	return A2(
11103		_elm_lang$html$Html$div,
11104		{
11105			ctor: '::',
11106			_0: _elm_lang$html$Html_Attributes$class('list-group'),
11107			_1: {ctor: '[]'}
11108		},
11109		A2(_elm_lang$core$List$map, _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$renderCustomItem, items));
11110};
11111var _rundis$elm_bootstrap$Bootstrap_ListGroup$li = F2(
11112	function (options, children) {
11113		return _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$Item(
11114			{itemFn: _elm_lang$html$Html$li, children: children, options: options});
11115	});
11116var _rundis$elm_bootstrap$Bootstrap_ListGroup$keyedUl = function (keyedItems) {
11117	return A2(
11118		_elm_lang$html$Html_Keyed$ul,
11119		{
11120			ctor: '::',
11121			_0: _elm_lang$html$Html_Attributes$class('list-group'),
11122			_1: {ctor: '[]'}
11123		},
11124		A2(
11125			_elm_lang$core$List$map,
11126			function (_p2) {
11127				var _p3 = _p2;
11128				return {
11129					ctor: '_Tuple2',
11130					_0: _p3._0,
11131					_1: _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$renderItem(_p3._1)
11132				};
11133			},
11134			keyedItems));
11135};
11136var _rundis$elm_bootstrap$Bootstrap_ListGroup$ul = function (items) {
11137	return A2(
11138		_elm_lang$html$Html$ul,
11139		{
11140			ctor: '::',
11141			_0: _elm_lang$html$Html_Attributes$class('list-group'),
11142			_1: {ctor: '[]'}
11143		},
11144		A2(_elm_lang$core$List$map, _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$renderItem, items));
11145};
11146
11147var _rundis$elm_bootstrap$Bootstrap_Card_Internal$applyModifier = F2(
11148	function (option, options) {
11149		var _p0 = option;
11150		switch (_p0.ctor) {
11151			case 'Aligned':
11152				return _elm_lang$core$Native_Utils.update(
11153					options,
11154					{
11155						aligned: _elm_lang$core$Maybe$Just(_p0._0)
11156					});
11157			case 'Coloring':
11158				return _elm_lang$core$Native_Utils.update(
11159					options,
11160					{
11161						coloring: _elm_lang$core$Maybe$Just(_p0._0)
11162					});
11163			case 'TextColoring':
11164				return _elm_lang$core$Native_Utils.update(
11165					options,
11166					{
11167						textColoring: _elm_lang$core$Maybe$Just(_p0._0)
11168					});
11169			default:
11170				return _elm_lang$core$Native_Utils.update(
11171					options,
11172					{
11173						attributes: A2(_elm_lang$core$Basics_ops['++'], options.attributes, _p0._0)
11174					});
11175		}
11176	});
11177var _rundis$elm_bootstrap$Bootstrap_Card_Internal$defaultOptions = {
11178	aligned: _elm_lang$core$Maybe$Nothing,
11179	coloring: _elm_lang$core$Maybe$Nothing,
11180	textColoring: _elm_lang$core$Maybe$Nothing,
11181	attributes: {ctor: '[]'}
11182};
11183var _rundis$elm_bootstrap$Bootstrap_Card_Internal$cardAttributes = function (modifiers) {
11184	var options = A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Card_Internal$applyModifier, _rundis$elm_bootstrap$Bootstrap_Card_Internal$defaultOptions, modifiers);
11185	return A2(
11186		_elm_lang$core$Basics_ops['++'],
11187		{
11188			ctor: '::',
11189			_0: _elm_lang$html$Html_Attributes$class('card'),
11190			_1: {ctor: '[]'}
11191		},
11192		A2(
11193			_elm_lang$core$Basics_ops['++'],
11194			function () {
11195				var _p1 = options.coloring;
11196				if (_p1.ctor === 'Just') {
11197					if (_p1._0.ctor === 'Roled') {
11198						return {
11199							ctor: '::',
11200							_0: A2(_rundis$elm_bootstrap$Bootstrap_Internal_Role$toClass, 'bg', _p1._0._0),
11201							_1: {ctor: '[]'}
11202						};
11203					} else {
11204						return {
11205							ctor: '::',
11206							_0: A2(_rundis$elm_bootstrap$Bootstrap_Internal_Role$toClass, 'border', _p1._0._0),
11207							_1: {ctor: '[]'}
11208						};
11209					}
11210				} else {
11211					return {ctor: '[]'};
11212				}
11213			}(),
11214			A2(
11215				_elm_lang$core$Basics_ops['++'],
11216				function () {
11217					var _p2 = options.textColoring;
11218					if (_p2.ctor === 'Just') {
11219						return {
11220							ctor: '::',
11221							_0: _rundis$elm_bootstrap$Bootstrap_Internal_Text$textColorClass(_p2._0),
11222							_1: {ctor: '[]'}
11223						};
11224					} else {
11225						return {ctor: '[]'};
11226					}
11227				}(),
11228				A2(
11229					_elm_lang$core$Basics_ops['++'],
11230					function () {
11231						var _p3 = options.aligned;
11232						if (_p3.ctor === 'Just') {
11233							return {
11234								ctor: '::',
11235								_0: _rundis$elm_bootstrap$Bootstrap_Internal_Text$textAlignClass(_p3._0),
11236								_1: {ctor: '[]'}
11237							};
11238						} else {
11239							return {ctor: '[]'};
11240						}
11241					}(),
11242					options.attributes))));
11243};
11244var _rundis$elm_bootstrap$Bootstrap_Card_Internal$applyBlockModifier = F2(
11245	function (option, options) {
11246		var _p4 = option;
11247		switch (_p4.ctor) {
11248			case 'AlignedBlock':
11249				return _elm_lang$core$Native_Utils.update(
11250					options,
11251					{
11252						aligned: _elm_lang$core$Maybe$Just(_p4._0)
11253					});
11254			case 'BlockColoring':
11255				return _elm_lang$core$Native_Utils.update(
11256					options,
11257					{
11258						coloring: _elm_lang$core$Maybe$Just(_p4._0)
11259					});
11260			case 'BlockTextColoring':
11261				return _elm_lang$core$Native_Utils.update(
11262					options,
11263					{
11264						textColoring: _elm_lang$core$Maybe$Just(_p4._0)
11265					});
11266			default:
11267				return _elm_lang$core$Native_Utils.update(
11268					options,
11269					{
11270						attributes: A2(_elm_lang$core$Basics_ops['++'], options.attributes, _p4._0)
11271					});
11272		}
11273	});
11274var _rundis$elm_bootstrap$Bootstrap_Card_Internal$defaultBlockOptions = {
11275	aligned: _elm_lang$core$Maybe$Nothing,
11276	coloring: _elm_lang$core$Maybe$Nothing,
11277	textColoring: _elm_lang$core$Maybe$Nothing,
11278	attributes: {ctor: '[]'}
11279};
11280var _rundis$elm_bootstrap$Bootstrap_Card_Internal$blockAttributes = function (modifiers) {
11281	var options = A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Card_Internal$applyBlockModifier, _rundis$elm_bootstrap$Bootstrap_Card_Internal$defaultBlockOptions, modifiers);
11282	return A2(
11283		_elm_lang$core$Basics_ops['++'],
11284		{
11285			ctor: '::',
11286			_0: _elm_lang$html$Html_Attributes$class('card-body'),
11287			_1: {ctor: '[]'}
11288		},
11289		A2(
11290			_elm_lang$core$Basics_ops['++'],
11291			function () {
11292				var _p5 = options.aligned;
11293				if (_p5.ctor === 'Just') {
11294					return {
11295						ctor: '::',
11296						_0: _rundis$elm_bootstrap$Bootstrap_Internal_Text$textAlignClass(_p5._0),
11297						_1: {ctor: '[]'}
11298					};
11299				} else {
11300					return {ctor: '[]'};
11301				}
11302			}(),
11303			A2(
11304				_elm_lang$core$Basics_ops['++'],
11305				function () {
11306					var _p6 = options.coloring;
11307					if (_p6.ctor === 'Just') {
11308						return {
11309							ctor: '::',
11310							_0: A2(_rundis$elm_bootstrap$Bootstrap_Internal_Role$toClass, 'bg', _p6._0),
11311							_1: {ctor: '[]'}
11312						};
11313					} else {
11314						return {ctor: '[]'};
11315					}
11316				}(),
11317				A2(
11318					_elm_lang$core$Basics_ops['++'],
11319					function () {
11320						var _p7 = options.textColoring;
11321						if (_p7.ctor === 'Just') {
11322							return {
11323								ctor: '::',
11324								_0: _rundis$elm_bootstrap$Bootstrap_Internal_Text$textColorClass(_p7._0),
11325								_1: {ctor: '[]'}
11326							};
11327						} else {
11328							return {ctor: '[]'};
11329						}
11330					}(),
11331					options.attributes))));
11332};
11333var _rundis$elm_bootstrap$Bootstrap_Card_Internal$renderBlock = function (block) {
11334	var _p8 = block;
11335	if (_p8.ctor === 'CardBlock') {
11336		return _p8._0;
11337	} else {
11338		return _p8._0;
11339	}
11340};
11341var _rundis$elm_bootstrap$Bootstrap_Card_Internal$renderBlocks = function (blocks) {
11342	return A2(
11343		_elm_lang$core$List$map,
11344		function (block) {
11345			var _p9 = block;
11346			if (_p9.ctor === 'CardBlock') {
11347				return _p9._0;
11348			} else {
11349				return _p9._0;
11350			}
11351		},
11352		blocks);
11353};
11354var _rundis$elm_bootstrap$Bootstrap_Card_Internal$CardOptions = F4(
11355	function (a, b, c, d) {
11356		return {aligned: a, coloring: b, textColoring: c, attributes: d};
11357	});
11358var _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockOptions = F4(
11359	function (a, b, c, d) {
11360		return {aligned: a, coloring: b, textColoring: c, attributes: d};
11361	});
11362var _rundis$elm_bootstrap$Bootstrap_Card_Internal$Attrs = function (a) {
11363	return {ctor: 'Attrs', _0: a};
11364};
11365var _rundis$elm_bootstrap$Bootstrap_Card_Internal$TextColoring = function (a) {
11366	return {ctor: 'TextColoring', _0: a};
11367};
11368var _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring = function (a) {
11369	return {ctor: 'Coloring', _0: a};
11370};
11371var _rundis$elm_bootstrap$Bootstrap_Card_Internal$Aligned = function (a) {
11372	return {ctor: 'Aligned', _0: a};
11373};
11374var _rundis$elm_bootstrap$Bootstrap_Card_Internal$Outlined = function (a) {
11375	return {ctor: 'Outlined', _0: a};
11376};
11377var _rundis$elm_bootstrap$Bootstrap_Card_Internal$Roled = function (a) {
11378	return {ctor: 'Roled', _0: a};
11379};
11380var _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockAttrs = function (a) {
11381	return {ctor: 'BlockAttrs', _0: a};
11382};
11383var _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockTextColoring = function (a) {
11384	return {ctor: 'BlockTextColoring', _0: a};
11385};
11386var _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockColoring = function (a) {
11387	return {ctor: 'BlockColoring', _0: a};
11388};
11389var _rundis$elm_bootstrap$Bootstrap_Card_Internal$AlignedBlock = function (a) {
11390	return {ctor: 'AlignedBlock', _0: a};
11391};
11392var _rundis$elm_bootstrap$Bootstrap_Card_Internal$ListGroup = function (a) {
11393	return {ctor: 'ListGroup', _0: a};
11394};
11395var _rundis$elm_bootstrap$Bootstrap_Card_Internal$listGroup = function (items) {
11396	return _rundis$elm_bootstrap$Bootstrap_Card_Internal$ListGroup(
11397		A2(
11398			_elm_lang$html$Html$ul,
11399			{
11400				ctor: '::',
11401				_0: _elm_lang$html$Html_Attributes$class('list-group list-group-flush'),
11402				_1: {ctor: '[]'}
11403			},
11404			A2(_elm_lang$core$List$map, _rundis$elm_bootstrap$Bootstrap_Internal_ListGroup$renderItem, items)));
11405};
11406var _rundis$elm_bootstrap$Bootstrap_Card_Internal$CardBlock = function (a) {
11407	return {ctor: 'CardBlock', _0: a};
11408};
11409var _rundis$elm_bootstrap$Bootstrap_Card_Internal$block = F2(
11410	function (options, items) {
11411		return _rundis$elm_bootstrap$Bootstrap_Card_Internal$CardBlock(
11412			A2(
11413				_elm_lang$html$Html$div,
11414				_rundis$elm_bootstrap$Bootstrap_Card_Internal$blockAttributes(options),
11415				A2(
11416					_elm_lang$core$List$map,
11417					function (_p10) {
11418						var _p11 = _p10;
11419						return _p11._0;
11420					},
11421					items)));
11422	});
11423var _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockItem = function (a) {
11424	return {ctor: 'BlockItem', _0: a};
11425};
11426
11427var _rundis$elm_bootstrap$Bootstrap_Card_Block$attrs = function (attrs) {
11428	return _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockAttrs(attrs);
11429};
11430var _rundis$elm_bootstrap$Bootstrap_Card_Block$textColor = function (color) {
11431	return _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockTextColoring(color);
11432};
11433var _rundis$elm_bootstrap$Bootstrap_Card_Block$dark = _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockColoring(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Dark);
11434var _rundis$elm_bootstrap$Bootstrap_Card_Block$light = _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockColoring(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Light);
11435var _rundis$elm_bootstrap$Bootstrap_Card_Block$danger = _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockColoring(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Danger);
11436var _rundis$elm_bootstrap$Bootstrap_Card_Block$warning = _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockColoring(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Warning);
11437var _rundis$elm_bootstrap$Bootstrap_Card_Block$info = _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockColoring(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Info);
11438var _rundis$elm_bootstrap$Bootstrap_Card_Block$success = _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockColoring(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Success);
11439var _rundis$elm_bootstrap$Bootstrap_Card_Block$secondary = _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockColoring(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Secondary);
11440var _rundis$elm_bootstrap$Bootstrap_Card_Block$primary = _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockColoring(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Primary);
11441var _rundis$elm_bootstrap$Bootstrap_Card_Block$align = function (align) {
11442	return _rundis$elm_bootstrap$Bootstrap_Card_Internal$AlignedBlock(align);
11443};
11444var _rundis$elm_bootstrap$Bootstrap_Card_Block$title = F3(
11445	function (elemFn, attributes, children) {
11446		return _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockItem(
11447			A2(
11448				elemFn,
11449				{
11450					ctor: '::',
11451					_0: _elm_lang$html$Html_Attributes$class('card-title'),
11452					_1: attributes
11453				},
11454				children));
11455	});
11456var _rundis$elm_bootstrap$Bootstrap_Card_Block$titleH6 = _rundis$elm_bootstrap$Bootstrap_Card_Block$title(_elm_lang$html$Html$h6);
11457var _rundis$elm_bootstrap$Bootstrap_Card_Block$titleH5 = _rundis$elm_bootstrap$Bootstrap_Card_Block$title(_elm_lang$html$Html$h5);
11458var _rundis$elm_bootstrap$Bootstrap_Card_Block$titleH4 = _rundis$elm_bootstrap$Bootstrap_Card_Block$title(_elm_lang$html$Html$h4);
11459var _rundis$elm_bootstrap$Bootstrap_Card_Block$titleH3 = _rundis$elm_bootstrap$Bootstrap_Card_Block$title(_elm_lang$html$Html$h3);
11460var _rundis$elm_bootstrap$Bootstrap_Card_Block$titleH2 = _rundis$elm_bootstrap$Bootstrap_Card_Block$title(_elm_lang$html$Html$h2);
11461var _rundis$elm_bootstrap$Bootstrap_Card_Block$titleH1 = _rundis$elm_bootstrap$Bootstrap_Card_Block$title(_elm_lang$html$Html$h1);
11462var _rundis$elm_bootstrap$Bootstrap_Card_Block$quote = F2(
11463	function (attributes, children) {
11464		return _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockItem(
11465			A2(
11466				_elm_lang$html$Html$blockquote,
11467				A2(
11468					_elm_lang$core$Basics_ops['++'],
11469					{
11470						ctor: '::',
11471						_0: _elm_lang$html$Html_Attributes$class('card-blockquote'),
11472						_1: {ctor: '[]'}
11473					},
11474					attributes),
11475				children));
11476	});
11477var _rundis$elm_bootstrap$Bootstrap_Card_Block$custom = function (element) {
11478	return _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockItem(element);
11479};
11480var _rundis$elm_bootstrap$Bootstrap_Card_Block$text = F2(
11481	function (attributes, children) {
11482		return _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockItem(
11483			A2(
11484				_elm_lang$html$Html$p,
11485				A2(
11486					_elm_lang$core$Basics_ops['++'],
11487					{
11488						ctor: '::',
11489						_0: _elm_lang$html$Html_Attributes$class('card-text'),
11490						_1: {ctor: '[]'}
11491					},
11492					attributes),
11493				children));
11494	});
11495var _rundis$elm_bootstrap$Bootstrap_Card_Block$link = F2(
11496	function (attributes, children) {
11497		return _rundis$elm_bootstrap$Bootstrap_Card_Internal$BlockItem(
11498			A2(
11499				_elm_lang$html$Html$a,
11500				A2(
11501					_elm_lang$core$Basics_ops['++'],
11502					{
11503						ctor: '::',
11504						_0: _elm_lang$html$Html_Attributes$class('card-link'),
11505						_1: {ctor: '[]'}
11506					},
11507					attributes),
11508				children));
11509	});
11510
11511var _rundis$elm_bootstrap$Bootstrap_Card$view = function (_p0) {
11512	var _p1 = _p0;
11513	return A2(
11514		_elm_lang$html$Html$div,
11515		_rundis$elm_bootstrap$Bootstrap_Card_Internal$cardAttributes(_p1._0.options),
11516		A2(
11517			_elm_lang$core$Basics_ops['++'],
11518			A2(
11519				_elm_lang$core$List$filterMap,
11520				_elm_lang$core$Basics$identity,
11521				{
11522					ctor: '::',
11523					_0: A2(
11524						_elm_lang$core$Maybe$map,
11525						function (_p2) {
11526							var _p3 = _p2;
11527							return _p3._0;
11528						},
11529						_p1._0.header),
11530					_1: {
11531						ctor: '::',
11532						_0: A2(
11533							_elm_lang$core$Maybe$map,
11534							function (_p4) {
11535								var _p5 = _p4;
11536								return _p5._0;
11537							},
11538							_p1._0.imgTop),
11539						_1: {ctor: '[]'}
11540					}
11541				}),
11542			A2(
11543				_elm_lang$core$Basics_ops['++'],
11544				_rundis$elm_bootstrap$Bootstrap_Card_Internal$renderBlocks(_p1._0.blocks),
11545				A2(
11546					_elm_lang$core$List$filterMap,
11547					_elm_lang$core$Basics$identity,
11548					{
11549						ctor: '::',
11550						_0: A2(
11551							_elm_lang$core$Maybe$map,
11552							function (_p6) {
11553								var _p7 = _p6;
11554								return _p7._0;
11555							},
11556							_p1._0.footer),
11557						_1: {
11558							ctor: '::',
11559							_0: A2(
11560								_elm_lang$core$Maybe$map,
11561								function (_p8) {
11562									var _p9 = _p8;
11563									return _p9._0;
11564								},
11565								_p1._0.imgBottom),
11566							_1: {ctor: '[]'}
11567						}
11568					}
11568))));
11569};
11570var _rundis$elm_bootstrap$Bootstrap_Card$group = function (cards) {
11571	return A2(
11572		_elm_lang$html$Html$div,
11573		{
11574			ctor: '::',
11575			_0: _elm_lang$html$Html_Attributes$class('card-group'),
11576			_1: {ctor: '[]'}
11577		},
11578		A2(_elm_lang$core$List$map, _rundis$elm_bootstrap$Bootstrap_Card$view, cards));
11579};
11580var _rundis$elm_bootstrap$Bootstrap_Card$deck = function (cards) {
11581	return A2(
11582		_elm_lang$html$Html$div,
11583		{
11584			ctor: '::',
11585			_0: _elm_lang$html$Html_Attributes$class('card-deck'),
11586			_1: {ctor: '[]'}
11587		},
11588		A2(_elm_lang$core$List$map, _rundis$elm_bootstrap$Bootstrap_Card$view, cards));
11589};
11590var _rundis$elm_bootstrap$Bootstrap_Card$columns = function (cards) {
11591	return A2(
11592		_elm_lang$html$Html$div,
11593		{
11594			ctor: '::',
11595			_0: _elm_lang$html$Html_Attributes$class('card-columns'),
11596			_1: {ctor: '[]'}
11597		},
11598		A2(_elm_lang$core$List$map, _rundis$elm_bootstrap$Bootstrap_Card$view, cards));
11599};
11600var _rundis$elm_bootstrap$Bootstrap_Card$keyedMulti = F2(
11601	function (clazz, keyedCards) {
11602		return A3(
11603			_elm_lang$html$Html_Keyed$node,
11604			'div',
11605			{
11606				ctor: '::',
11607				_0: _elm_lang$html$Html_Attributes$class(clazz),
11608				_1: {ctor: '[]'}
11609			},
11610			A2(
11611				_elm_lang$core$List$map,
11612				function (_p10) {
11613					var _p11 = _p10;
11614					return {
11615						ctor: '_Tuple2',
11616						_0: _p11._0,
11617						_1: _rundis$elm_bootstrap$Bootstrap_Card$view(_p11._1)
11618					};
11619				},
11620				keyedCards));
11621	});
11622var _rundis$elm_bootstrap$Bootstrap_Card$keyedGroup = _rundis$elm_bootstrap$Bootstrap_Card$keyedMulti('card-group');
11623var _rundis$elm_bootstrap$Bootstrap_Card$keyedDeck = _rundis$elm_bootstrap$Bootstrap_Card$keyedMulti('card-deck');
11624var _rundis$elm_bootstrap$Bootstrap_Card$keyedColumns = _rundis$elm_bootstrap$Bootstrap_Card$keyedMulti('card-columns');
11625var _rundis$elm_bootstrap$Bootstrap_Card$attrs = function (attrs) {
11626	return _rundis$elm_bootstrap$Bootstrap_Card_Internal$Attrs(attrs);
11627};
11628var _rundis$elm_bootstrap$Bootstrap_Card$textColor = function (color) {
11629	return _rundis$elm_bootstrap$Bootstrap_Card_Internal$TextColoring(color);
11630};
11631var _rundis$elm_bootstrap$Bootstrap_Card$outlineDark = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11632	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Dark));
11633var _rundis$elm_bootstrap$Bootstrap_Card$outlineLight = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11634	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Light));
11635var _rundis$elm_bootstrap$Bootstrap_Card$outlineDanger = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11636	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Danger));
11637var _rundis$elm_bootstrap$Bootstrap_Card$outlineWarning = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11638	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Warning));
11639var _rundis$elm_bootstrap$Bootstrap_Card$outlineInfo = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11640	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Info));
11641var _rundis$elm_bootstrap$Bootstrap_Card$outlineSuccess = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11642	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Success));
11643var _rundis$elm_bootstrap$Bootstrap_Card$outlineSecondary = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11644	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Secondary));
11645var _rundis$elm_bootstrap$Bootstrap_Card$outlinePrimary = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11646	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Primary));
11647var _rundis$elm_bootstrap$Bootstrap_Card$dark = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11648	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Dark));
11649var _rundis$elm_bootstrap$Bootstrap_Card$light = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11650	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Light));
11651var _rundis$elm_bootstrap$Bootstrap_Card$danger = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11652	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Danger));
11653var _rundis$elm_bootstrap$Bootstrap_Card$warning = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11654	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Warning));
11655var _rundis$elm_bootstrap$Bootstrap_Card$info = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11656	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Info));
11657var _rundis$elm_bootstrap$Bootstrap_Card$success = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11658	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Success));
11659var _rundis$elm_bootstrap$Bootstrap_Card$secondary = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11660	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Secondary));
11661var _rundis$elm_bootstrap$Bootstrap_Card$primary = _rundis$elm_bootstrap$Bootstrap_Card_Internal$Coloring(
11662	_rundis$elm_bootstrap$Bootstrap_Card_Internal$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Primary));
11663var _rundis$elm_bootstrap$Bootstrap_Card$align = function (align) {
11664	return _rundis$elm_bootstrap$Bootstrap_Card_Internal$Aligned(align);
11665};
11666var _rundis$elm_bootstrap$Bootstrap_Card$Config = function (a) {
11667	return {ctor: 'Config', _0: a};
11668};
11669var _rundis$elm_bootstrap$Bootstrap_Card$config = function (options) {
11670	return _rundis$elm_bootstrap$Bootstrap_Card$Config(
11671		{
11672			options: options,
11673			header: _elm_lang$core$Maybe$Nothing,
11674			footer: _elm_lang$core$Maybe$Nothing,
11675			imgTop: _elm_lang$core$Maybe$Nothing,
11676			imgBottom: _elm_lang$core$Maybe$Nothing,
11677			blocks: {ctor: '[]'}
11678		});
11679};
11680var _rundis$elm_bootstrap$Bootstrap_Card$listGroup = F2(
11681	function (items, _p12) {
11682		var _p13 = _p12;
11683		var _p14 = _p13._0;
11684		return _rundis$elm_bootstrap$Bootstrap_Card$Config(
11685			_elm_lang$core$Native_Utils.update(
11686				_p14,
11687				{
11688					blocks: A2(
11689						_elm_lang$core$Basics_ops['++'],
11690						_p14.blocks,
11691						{
11692							ctor: '::',
11693							_0: _rundis$elm_bootstrap$Bootstrap_Card_Internal$listGroup(items),
11694							_1: {ctor: '[]'}
11695						})
11696				}));
11697	});
11698var _rundis$elm_bootstrap$Bootstrap_Card$block = F3(
11699	function (options, items, _p15) {
11700		var _p16 = _p15;
11701		var _p17 = _p16._0;
11702		return _rundis$elm_bootstrap$Bootstrap_Card$Config(
11703			_elm_lang$core$Native_Utils.update(
11704				_p17,
11705				{
11706					blocks: A2(
11707						_elm_lang$core$Basics_ops['++'],
11708						_p17.blocks,
11709						{
11710							ctor: '::',
11711							_0: A2(_rundis$elm_bootstrap$Bootstrap_Card_Internal$block, options, items),
11712							_1: {ctor: '[]'}
11713						})
11714				}));
11715	});
11716var _rundis$elm_bootstrap$Bootstrap_Card$Header = function (a) {
11717	return {ctor: 'Header', _0: a};
11718};
11719var _rundis$elm_bootstrap$Bootstrap_Card$headerPrivate = F4(
11720	function (elemFn, attributes, children, _p18) {
11721		var _p19 = _p18;
11722		return _rundis$elm_bootstrap$Bootstrap_Card$Config(
11723			_elm_lang$core$Native_Utils.update(
11724				_p19._0,
11725				{
11726					header: _elm_lang$core$Maybe$Just(
11727						_rundis$elm_bootstrap$Bootstrap_Card$Header(
11728							A2(
11729								elemFn,
11730								{
11731									ctor: '::',
11732									_0: _elm_lang$html$Html_Attributes$class('card-header'),
11733									_1: attributes
11734								},
11735								children)))
11736				}));
11737	});
11738var _rundis$elm_bootstrap$Bootstrap_Card$header = _rundis$elm_bootstrap$Bootstrap_Card$headerPrivate(_elm_lang$html$Html$div);
11739var _rundis$elm_bootstrap$Bootstrap_Card$headerH1 = _rundis$elm_bootstrap$Bootstrap_Card$headerPrivate(_elm_lang$html$Html$h1);
11740var _rundis$elm_bootstrap$Bootstrap_Card$headerH2 = _rundis$elm_bootstrap$Bootstrap_Card$headerPrivate(_elm_lang$html$Html$h2);
11741var _rundis$elm_bootstrap$Bootstrap_Card$headerH3 = _rundis$elm_bootstrap$Bootstrap_Card$headerPrivate(_elm_lang$html$Html$h3);
11742var _rundis$elm_bootstrap$Bootstrap_Card$headerH4 = _rundis$elm_bootstrap$Bootstrap_Card$headerPrivate(_elm_lang$html$Html$h4);
11743var _rundis$elm_bootstrap$Bootstrap_Card$headerH5 = _rundis$elm_bootstrap$Bootstrap_Card$headerPrivate(_elm_lang$html$Html$h5);
11744var _rundis$elm_bootstrap$Bootstrap_Card$headerH6 = _rundis$elm_bootstrap$Bootstrap_Card$headerPrivate(_elm_lang$html$Html$h6);
11745var _rundis$elm_bootstrap$Bootstrap_Card$Footer = function (a) {
11746	return {ctor: 'Footer', _0: a};
11747};
11748var _rundis$elm_bootstrap$Bootstrap_Card$footer = F3(
11749	function (attributes, children, _p20) {
11750		var _p21 = _p20;
11751		return _rundis$elm_bootstrap$Bootstrap_Card$Config(
11752			_elm_lang$core$Native_Utils.update(
11753				_p21._0,
11754				{
11755					footer: _elm_lang$core$Maybe$Just(
11756						_rundis$elm_bootstrap$Bootstrap_Card$Footer(
11757							A2(
11758								_elm_lang$html$Html$div,
11759								{
11760									ctor: '::',
11761									_0: _elm_lang$html$Html_Attributes$class('card-footer'),
11762									_1: attributes
11763								},
11764								children)))
11765				}));
11766	});
11767var _rundis$elm_bootstrap$Bootstrap_Card$ImageTop = function (a) {
11768	return {ctor: 'ImageTop', _0: a};
11769};
11770var _rundis$elm_bootstrap$Bootstrap_Card$imgTop = F3(
11771	function (attributes, children, _p22) {
11772		var _p23 = _p22;
11773		return _rundis$elm_bootstrap$Bootstrap_Card$Config(
11774			_elm_lang$core$Native_Utils.update(
11775				_p23._0,
11776				{
11777					imgTop: _elm_lang$core$Maybe$Just(
11778						_rundis$elm_bootstrap$Bootstrap_Card$ImageTop(
11779							A2(
11780								_elm_lang$html$Html$img,
11781								A2(
11782									_elm_lang$core$Basics_ops['++'],
11783									{
11784										ctor: '::',
11785										_0: _elm_lang$html$Html_Attributes$class('card-img-top'),
11786										_1: {ctor: '[]'}
11787									},
11788									attributes),
11789								children)))
11790				}));
11791	});
11792var _rundis$elm_bootstrap$Bootstrap_Card$ImageBottom = function (a) {
11793	return {ctor: 'ImageBottom', _0: a};
11794};
11795var _rundis$elm_bootstrap$Bootstrap_Card$imgBottom = F3(
11796	function (attributes, children, _p24) {
11797		var _p25 = _p24;
11798		return _rundis$elm_bootstrap$Bootstrap_Card$Config(
11799			_elm_lang$core$Native_Utils.update(
11800				_p25._0,
11801				{
11802					imgBottom: _elm_lang$core$Maybe$Just(
11803						_rundis$elm_bootstrap$Bootstrap_Card$ImageBottom(
11804							A2(
11805								_elm_lang$html$Html$img,
11806								A2(
11807									_elm_lang$core$Basics_ops['++'],
11808									{
11809										ctor: '::',
11810										_0: _elm_lang$html$Html_Attributes$class('card-img-bottom'),
11811										_1: {ctor: '[]'}
11812									},
11813									attributes),
11814								children)))
11815				}));
11816	});
11817
11818var _rundis$elm_bootstrap$Bootstrap_Alert$headingPrivate = F3(
11819	function (elemFn, attributes, children) {
11820		return A2(
11821			elemFn,
11822			{
11823				ctor: '::',
11824				_0: _elm_lang$html$Html_Attributes$class('alert-header'),
11825				_1: attributes
11826			},
11827			children);
11828	});
11829var _rundis$elm_bootstrap$Bootstrap_Alert$h6 = F2(
11830	function (attributes, children) {
11831		return A3(_rundis$elm_bootstrap$Bootstrap_Alert$headingPrivate, _elm_lang$html$Html$h6, attributes, children);
11832	});
11833var _rundis$elm_bootstrap$Bootstrap_Alert$h5 = F2(
11834	function (attributes, children) {
11835		return A3(_rundis$elm_bootstrap$Bootstrap_Alert$headingPrivate, _elm_lang$html$Html$h5, attributes, children);
11836	});
11837var _rundis$elm_bootstrap$Bootstrap_Alert$h4 = F2(
11838	function (attributes, children) {
11839		return A3(_rundis$elm_bootstrap$Bootstrap_Alert$headingPrivate, _elm_lang$html$Html$h4, attributes, children);
11840	});
11841var _rundis$elm_bootstrap$Bootstrap_Alert$h3 = F2(
11842	function (attributes, children) {
11843		return A3(_rundis$elm_bootstrap$Bootstrap_Alert$headingPrivate, _elm_lang$html$Html$h3, attributes, children);
11844	});
11845var _rundis$elm_bootstrap$Bootstrap_Alert$h2 = F2(
11846	function (attributes, children) {
11847		return A3(_rundis$elm_bootstrap$Bootstrap_Alert$headingPrivate, _elm_lang$html$Html$h2, attributes, children);
11848	});
11849var _rundis$elm_bootstrap$Bootstrap_Alert$h1 = F2(
11850	function (attributes, children) {
11851		return A3(_rundis$elm_bootstrap$Bootstrap_Alert$headingPrivate, _elm_lang$html$Html$h1, attributes, children);
11852	});
11853var _rundis$elm_bootstrap$Bootstrap_Alert$link = F2(
11854	function (attributes, children) {
11855		return A2(
11856			_elm_lang$html$Html$a,
11857			{
11858				ctor: '::',
11859				_0: _elm_lang$html$Html_Attributes$class('alert-link'),
11860				_1: attributes
11861			},
11862			children);
11863	});
11864var _rundis$elm_bootstrap$Bootstrap_Alert$isDismissable = function (configRec) {
11865	var _p0 = configRec.dismissable;
11866	if (_p0.ctor === 'Just') {
11867		return true;
11868	} else {
11869		return false;
11870	}
11871};
11872var _rundis$elm_bootstrap$Bootstrap_Alert$injectButton = F2(
11873	function (btn, children) {
11874		var _p1 = children;
11875		if (_p1.ctor === '::') {
11876			return {
11877				ctor: '::',
11878				_0: _p1._0,
11879				_1: {ctor: '::', _0: btn, _1: _p1._1}
11880			};
11881		} else {
11882			return {
11883				ctor: '::',
11884				_0: btn,
11885				_1: {ctor: '[]'}
11886			};
11887		}
11888	});
11889var _rundis$elm_bootstrap$Bootstrap_Alert$ConfigRec = F6(
11890	function (a, b, c, d, e, f) {
11891		return {visibility: a, dismissable: b, attributes: c, children: d, role: e, withAnimation: f};
11892	});
11893var _rundis$elm_bootstrap$Bootstrap_Alert$Config = function (a) {
11894	return {ctor: 'Config', _0: a};
11895};
11896var _rundis$elm_bootstrap$Bootstrap_Alert$role = F2(
11897	function (role, _p2) {
11898		var _p3 = _p2;
11899		return _rundis$elm_bootstrap$Bootstrap_Alert$Config(
11900			_elm_lang$core$Native_Utils.update(
11901				_p3._0,
11902				{role: role}));
11903	});
11904var _rundis$elm_bootstrap$Bootstrap_Alert$primary = function (config) {
11905	return A2(_rundis$elm_bootstrap$Bootstrap_Alert$role, _rundis$elm_bootstrap$Bootstrap_Internal_Role$Primary, config);
11906};
11907var _rundis$elm_bootstrap$Bootstrap_Alert$secondary = function (config) {
11908	return A2(_rundis$elm_bootstrap$Bootstrap_Alert$role, _rundis$elm_bootstrap$Bootstrap_Internal_Role$Secondary, config);
11909};
11910var _rundis$elm_bootstrap$Bootstrap_Alert$success = function (config) {
11911	return A2(_rundis$elm_bootstrap$Bootstrap_Alert$role, _rundis$elm_bootstrap$Bootstrap_Internal_Role$Success, config);
11912};
11913var _rundis$elm_bootstrap$Bootstrap_Alert$info = function (config) {
11914	return A2(_rundis$elm_bootstrap$Bootstrap_Alert$role, _rundis$elm_bootstrap$Bootstrap_Internal_Role$Info, config);
11915};
11916var _rundis$elm_bootstrap$Bootstrap_Alert$warning = function (config) {
11917	return A2(_rundis$elm_bootstrap$Bootstrap_Alert$role, _rundis$elm_bootstrap$Bootstrap_Internal_Role$Warning, config);
11918};
11919var _rundis$elm_bootstrap$Bootstrap_Alert$danger = function (config) {
11920	return A2(_rundis$elm_bootstrap$Bootstrap_Alert$role, _rundis$elm_bootstrap$Bootstrap_Internal_Role$Danger, config);
11921};
11922var _rundis$elm_bootstrap$Bootstrap_Alert$dark = function (config) {
11923	return A2(_rundis$elm_bootstrap$Bootstrap_Alert$role, _rundis$elm_bootstrap$Bootstrap_Internal_Role$Dark, config);
11924};
11925var _rundis$elm_bootstrap$Bootstrap_Alert$light = function (config) {
11926	return A2(_rundis$elm_bootstrap$Bootstrap_Alert$role, _rundis$elm_bootstrap$Bootstrap_Internal_Role$Light, config);
11927};
11928var _rundis$elm_bootstrap$Bootstrap_Alert$attrs = F2(
11929	function (attributes, _p4) {
11930		var _p5 = _p4;
11931		return _rundis$elm_bootstrap$Bootstrap_Alert$Config(
11932			_elm_lang$core$Native_Utils.update(
11933				_p5._0,
11934				{attributes: attributes}));
11935	});
11936var _rundis$elm_bootstrap$Bootstrap_Alert$dismissable = F2(
11937	function (dismissMsg, _p6) {
11938		var _p7 = _p6;
11939		return _rundis$elm_bootstrap$Bootstrap_Alert$Config(
11940			_elm_lang$core$Native_Utils.update(
11941				_p7._0,
11942				{
11943					dismissable: _elm_lang$core$Maybe$Just(dismissMsg)
11944				}));
11945	});
11946var _rundis$elm_bootstrap$Bootstrap_Alert$dismissableWithAnimation = F2(
11947	function (dismissMsg, _p8) {
11948		var _p9 = _p8;
11949		return _rundis$elm_bootstrap$Bootstrap_Alert$Config(
11950			_elm_lang$core$Native_Utils.update(
11951				_p9._0,
11952				{
11953					dismissable: _elm_lang$core$Maybe$Just(dismissMsg),
11954					withAnimation: true
11955				}));
11956	});
11957var _rundis$elm_bootstrap$Bootstrap_Alert$children = F2(
11958	function (children, _p10) {
11959		var _p11 = _p10;
11960		return _rundis$elm_bootstrap$Bootstrap_Alert$Config(
11961			_elm_lang$core$Native_Utils.update(
11962				_p11._0,
11963				{children: children}));
11964	});
11965var _rundis$elm_bootstrap$Bootstrap_Alert$Closed = {ctor: 'Closed'};
11966var _rundis$elm_bootstrap$Bootstrap_Alert$closed = _rundis$elm_bootstrap$Bootstrap_Alert$Closed;
11967var _rundis$elm_bootstrap$Bootstrap_Alert$FadeClose = {ctor: 'FadeClose'};
11968var _rundis$elm_bootstrap$Bootstrap_Alert$subscriptions = F2(
11969	function (visibility, animateMsg) {
11970		var _p12 = visibility;
11971		if (_p12.ctor === 'StartClose') {
11972			return _elm_lang$animation_frame$AnimationFrame$times(
11973				function (_p13) {
11974					return animateMsg(_rundis$elm_bootstrap$Bootstrap_Alert$FadeClose);
11975				});
11976		} else {
11977			return _elm_lang$core$Platform_Sub$none;
11978		}
11979	});
11980var _rundis$elm_bootstrap$Bootstrap_Alert$StartClose = {ctor: 'StartClose'};
11981var _rundis$elm_bootstrap$Bootstrap_Alert$clickHandler = F2(
11982	function (visibility, configRec) {
11983		var handleClick = F2(
11984			function (viz, toMsg) {
11985				return _elm_lang$html$Html_Events$onClick(
11986					toMsg(viz));
11987			});
11988		var _p14 = configRec.dismissable;
11989		if (_p14.ctor === 'Just') {
11990			var _p15 = _p14._0;
11991			return {
11992				ctor: '::',
11993				_0: configRec.withAnimation ? A2(handleClick, _rundis$elm_bootstrap$Bootstrap_Alert$StartClose, _p15) : A2(handleClick, _rundis$elm_bootstrap$Bootstrap_Alert$Closed, _p15),
11994				_1: {ctor: '[]'}
11995			};
11996		} else {
11997			return {ctor: '[]'};
11998		}
11999	});
12000var _rundis$elm_bootstrap$Bootstrap_Alert$maybeAddDismissButton = F3(
12001	function (visibilty, configRec, children) {
12002		return _rundis$elm_bootstrap$Bootstrap_Alert$isDismissable(configRec) ? A2(
12003			_rundis$elm_bootstrap$Bootstrap_Alert$injectButton,
12004			A2(
12005				_elm_lang$html$Html$button,
12006				A2(
12007					_elm_lang$core$Basics_ops['++'],
12008					{
12009						ctor: '::',
12010						_0: _elm_lang$html$Html_Attributes$type_('button'),
12011						_1: {
12012							ctor: '::',
12013							_0: _elm_lang$html$Html_Attributes$class('close'),
12014							_1: {
12015								ctor: '::',
12016								_0: A2(_elm_lang$html$Html_Attributes$attribute, 'aria-label', 'close'),
12017								_1: {ctor: '[]'}
12018							}
12019						}
12020					},
12021					A2(_rundis$elm_bootstrap$Bootstrap_Alert$clickHandler, visibilty, configRec)),
12022				{
12023					ctor: '::',
12024					_0: A2(
12025						_elm_lang$html$Html$span,
12026						{
12027							ctor: '::',
12028							_0: A2(_elm_lang$html$Html_Attributes$attribute, 'aria-hidden', 'true'),
12029							_1: {ctor: '[]'}
12030						},
12031						{
12032							ctor: '::',
12033							_0: _elm_lang$html$Html$text('×'),
12034							_1: {ctor: '[]'}
12035						}),
12036					_1: {ctor: '[]'}
12037				}),
12038			children) : children;
12039	});
12040var _rundis$elm_bootstrap$Bootstrap_Alert$Shown = {ctor: 'Shown'};
12041var _rundis$elm_bootstrap$Bootstrap_Alert$shown = _rundis$elm_bootstrap$Bootstrap_Alert$Shown;
12042var _rundis$elm_bootstrap$Bootstrap_Alert$config = _rundis$elm_bootstrap$Bootstrap_Alert$Config(
12043	{
12044		visibility: _rundis$elm_bootstrap$Bootstrap_Alert$Shown,
12045		dismissable: _elm_lang$core$Maybe$Nothing,
12046		attributes: {ctor: '[]'},
12047		children: {ctor: '[]'},
12048		role: _rundis$elm_bootstrap$Bootstrap_Internal_Role$Secondary,
12049		withAnimation: false
12050	});
12051var _rundis$elm_bootstrap$Bootstrap_Alert$viewAttributes = F2(
12052	function (visibility, configRec) {
12053		var animationAttributes = function () {
12054			if (configRec.withAnimation) {
12055				var _p16 = configRec.dismissable;
12056				if (_p16.ctor === 'Just') {
12057					return {
12058						ctor: '::',
12059						_0: A2(
12060							_elm_lang$html$Html_Events$on,
12061							'transitionend',
12062							_elm_lang$core$Json_Decode$succeed(
12063								_p16._0(_rundis$elm_bootstrap$Bootstrap_Alert$Closed))),
12064						_1: {ctor: '[]'}
12065					};
12066				} else {
12067					return {ctor: '[]'};
12068				}
12069			} else {
12070				return {ctor: '[]'};
12071			}
12072		}();
12073		var visibiltyAttributes = _elm_lang$core$Native_Utils.eq(visibility, _rundis$elm_bootstrap$Bootstrap_Alert$Closed) ? {
12074			ctor: '::',
12075			_0: _elm_lang$html$Html_Attributes$style(
12076				{
12077					ctor: '::',
12078					_0: {ctor: '_Tuple2', _0: 'display', _1: 'none'},
12079					_1: {ctor: '[]'}
12080				}),
12081			_1: {ctor: '[]'}
12082		} : {ctor: '[]'};
12083		var alertAttributes = {
12084			ctor: '::',
12085			_0: A2(_elm_lang$html$Html_Attributes$attribute, 'role', 'alert'),
12086			_1: {
12087				ctor: '::',
12088				_0: _elm_lang$html$Html_Attributes$classList(
12089					{
12090						ctor: '::',
12091						_0: {ctor: '_Tuple2', _0: 'alert', _1: true},
12092						_1: {
12093							ctor: '::',
12094							_0: {
12095								ctor: '_Tuple2',
12096								_0: 'alert-dismissible',
12097								_1: _rundis$elm_bootstrap$Bootstrap_Alert$isDismissable(configRec)
12098							},
12099							_1: {
12100								ctor: '::',
12101								_0: {ctor: '_Tuple2', _0: 'fade', _1: configRec.withAnimation},
12102								_1: {
12103									ctor: '::',
12104									_0: {
12105										ctor: '_Tuple2',
12106										_0: 'show',
12107										_1: _elm_lang$core$Native_Utils.eq(visibility, _rundis$elm_bootstrap$Bootstrap_Alert$Shown)
12108									},
12109									_1: {ctor: '[]'}
12110								}
12111							}
12112						}
12113					}),
12114				_1: {
12115					ctor: '::',
12116					_0: A2(_rundis$elm_bootstrap$Bootstrap_Internal_Role$toClass, 'alert', 
12116configRec.role),
12117					_1: {ctor: '[]'}
12118				}
12119			}
12120		};
12121		return _elm_lang$core$List$concat(
12122			{
12123				ctor: '::',
12124				_0: configRec.attributes,
12125				_1: {
12126					ctor: '::',
12127					_0: alertAttributes,
12128					_1: {
12129						ctor: '::',
12130						_0: visibiltyAttributes,
12131						_1: {
12132							ctor: '::',
12133							_0: animationAttributes,
12134							_1: {ctor: '[]'}
12135						}
12136					}
12137				}
12138			});
12139	});
12140var _rundis$elm_bootstrap$Bootstrap_Alert$view = F2(
12141	function (visibility, _p17) {
12142		var _p18 = _p17;
12143		var _p19 = _p18._0;
12144		return A2(
12145			_elm_lang$html$Html$div,
12146			A2(_rundis$elm_bootstrap$Bootstrap_Alert$viewAttributes, visibility, _p19),
12147			A3(_rundis$elm_bootstrap$Bootstrap_Alert$maybeAddDismissButton, visibility, _p19, _p19.children));
12148	});
12149var _rundis$elm_bootstrap$Bootstrap_Alert$simple = F3(
12150	function (role_, attributes, children_) {
12151		return A2(
12152			_rundis$elm_bootstrap$Bootstrap_Alert$view,
12153			_rundis$elm_bootstrap$Bootstrap_Alert$Shown,
12154			A2(
12155				_rundis$elm_bootstrap$Bootstrap_Alert$children,
12156				children_,
12157				A2(
12158					_rundis$elm_bootstrap$Bootstrap_Alert$attrs,
12159					attributes,
12160					A2(_rundis$elm_bootstrap$Bootstrap_Alert$role, role_, _rundis$elm_bootstrap$Bootstrap_Alert$config))));
12161	});
12162var _rundis$elm_bootstrap$Bootstrap_Alert$simplePrimary = _rundis$elm_bootstrap$Bootstrap_Alert$simple(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Primary);
12163var _rundis$elm_bootstrap$Bootstrap_Alert$simpleSecondary = _rundis$elm_bootstrap$Bootstrap_Alert$simple(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Secondary);
12164var _rundis$elm_bootstrap$Bootstrap_Alert$simpleSuccess = _rundis$elm_bootstrap$Bootstrap_Alert$simple(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Success);
12165var _rundis$elm_bootstrap$Bootstrap_Alert$simpleInfo = _rundis$elm_bootstrap$Bootstrap_Alert$simple(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Info);
12166var _rundis$elm_bootstrap$Bootstrap_Alert$simpleWarning = _rundis$elm_bootstrap$Bootstrap_Alert$simple(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Warning);
12167var _rundis$elm_bootstrap$Bootstrap_Alert$simpleDanger = _rundis$elm_bootstrap$Bootstrap_Alert$simple(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Danger);
12168var _rundis$elm_bootstrap$Bootstrap_Alert$simpleDark = _rundis$elm_bootstrap$Bootstrap_Alert$simple(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Dark);
12169var _rundis$elm_bootstrap$Bootstrap_Alert$simpleLight = _rundis$elm_bootstrap$Bootstrap_Alert$simple(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Light);
12170
12171var _rundis$elm_bootstrap$Bootstrap_Internal_Button$roleClass = function (role) {
12172	var _p0 = role;
12173	switch (_p0.ctor) {
12174		case 'Primary':
12175			return 'primary';
12176		case 'Secondary':
12177			return 'secondary';
12178		case 'Success':
12179			return 'success';
12180		case 'Info':
12181			return 'info';
12182		case 'Warning':
12183			return 'warning';
12184		case 'Danger':
12185			return 'danger';
12186		case 'Dark':
12187			return 'dark';
12188		case 'Light':
12189			return 'light';
12190		default:
12191			return 'link';
12192	}
12193};
12194var _rundis$elm_bootstrap$Bootstrap_Internal_Button$applyModifier = F2(
12195	function (modifier, options) {
12196		var _p1 = modifier;
12197		switch (_p1.ctor) {
12198			case 'Size':
12199				return _elm_lang$core$Native_Utils.update(
12200					options,
12201					{
12202						size: _elm_lang$core$Maybe$Just(_p1._0)
12203					});
12204			case 'Coloring':
12205				return _elm_lang$core$Native_Utils.update(
12206					options,
12207					{
12208						coloring: _elm_lang$core$Maybe$Just(_p1._0)
12209					});
12210			case 'Block':
12211				return _elm_lang$core$Native_Utils.update(
12212					options,
12213					{block: true});
12214			case 'Disabled':
12215				return _elm_lang$core$Native_Utils.update(
12216					options,
12217					{disabled: _p1._0});
12218			default:
12219				return _elm_lang$core$Native_Utils.update(
12220					options,
12221					{
12222						attributes: A2(_elm_lang$core$Basics_ops['++'], options.attributes, _p1._0)
12223					});
12224		}
12225	});
12226var _rundis$elm_bootstrap$Bootstrap_Internal_Button$defaultOptions = {
12227	coloring: _elm_lang$core$Maybe$Nothing,
12228	block: false,
12229	disabled: false,
12230	size: _elm_lang$core$Maybe$Nothing,
12231	attributes: {ctor: '[]'}
12232};
12233var _rundis$elm_bootstrap$Bootstrap_Internal_Button$buttonAttributes = function (modifiers) {
12234	var options = A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Internal_Button$applyModifier, _rundis$elm_bootstrap$Bootstrap_Internal_Button$defaultOptions, modifiers);
12235	return A2(
12236		_elm_lang$core$Basics_ops['++'],
12237		{
12238			ctor: '::',
12239			_0: _elm_lang$html$Html_Attributes$classList(
12240				{
12241					ctor: '::',
12242					_0: {ctor: '_Tuple2', _0: 'btn', _1: true},
12243					_1: {
12244						ctor: '::',
12245						_0: {ctor: '_Tuple2', _0: 'btn-block', _1: options.block},
12246						_1: {
12247							ctor: '::',
12248							_0: {ctor: '_Tuple2', _0: 'disabled', _1: options.disabled},
12249							_1: {ctor: '[]'}
12250						}
12251					}
12252				}),
12253			_1: {
12254				ctor: '::',
12255				_0: _elm_lang$html$Html_Attributes$disabled(options.disabled),
12256				_1: {ctor: '[]'}
12257			}
12258		},
12259		A2(
12260			_elm_lang$core$Basics_ops['++'],
12261			function () {
12262				var _p2 = A2(_elm_lang$core$Maybe$andThen, _rundis$elm_bootstrap$Bootstrap_General_Internal$screenSizeOption, options.size);
12263				if (_p2.ctor === 'Just') {
12264					return {
12265						ctor: '::',
12266						_0: _elm_lang$html$Html_Attributes$class(
12267							A2(_elm_lang$core$Basics_ops['++'], 'btn-', _p2._0)),
12268						_1: {ctor: '[]'}
12269					};
12270				} else {
12271					return {ctor: '[]'};
12272				}
12273			}(),
12274			A2(
12275				_elm_lang$core$Basics_ops['++'],
12276				function () {
12277					var _p3 = options.coloring;
12278					if (_p3.ctor === 'Just') {
12279						if (_p3._0.ctor === 'Roled') {
12280							return {
12281								ctor: '::',
12282								_0: _elm_lang$html$Html_Attributes$class(
12283									A2(
12284										_elm_lang$core$Basics_ops['++'],
12285										'btn-',
12286										_rundis$elm_bootstrap$Bootstrap_Internal_Button$roleClass(_p3._0._0))),
12287								_1: {ctor: '[]'}
12288							};
12289						} else {
12290							return {
12291								ctor: '::',
12292								_0: _elm_lang$html$Html_Attributes$class(
12293									A2(
12294										_elm_lang$core$Basics_ops['++'],
12295										'btn-outline-',
12296										_rundis$elm_bootstrap$Bootstrap_Internal_Button$roleClass(_p3._0._0))),
12297								_1: {ctor: '[]'}
12298							};
12299						}
12300					} else {
12301						return {ctor: '[]'};
12302					}
12303				}(),
12304				options.attributes)));
12305};
12306var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Options = F5(
12307	function (a, b, c, d, e) {
12308		return {coloring: a, block: b, disabled: c, size: d, attributes: e};
12309	});
12310var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Attrs = function (a) {
12311	return {ctor: 'Attrs', _0: a};
12312};
12313var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Disabled = function (a) {
12314	return {ctor: 'Disabled', _0: a};
12315};
12316var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Block = {ctor: 'Block'};
12317var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring = function (a) {
12318	return {ctor: 'Coloring', _0: a};
12319};
12320var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Size = function (a) {
12321	return {ctor: 'Size', _0: a};
12322};
12323var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Outlined = function (a) {
12324	return {ctor: 'Outlined', _0: a};
12325};
12326var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Roled = function (a) {
12327	return {ctor: 'Roled', _0: a};
12328};
12329var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Link = {ctor: 'Link'};
12330var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Light = {ctor: 'Light'};
12331var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Dark = {ctor: 'Dark'};
12332var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Danger = {ctor: 'Danger'};
12333var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Warning = {ctor: 'Warning'};
12334var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Info = {ctor: 'Info'};
12335var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Success = {ctor: 'Success'};
12336var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Secondary = {ctor: 'Secondary'};
12337var _rundis$elm_bootstrap$Bootstrap_Internal_Button$Primary = {ctor: 'Primary'};
12338
12339var _rundis$elm_bootstrap$Bootstrap_Button$disabled = function (disabled) {
12340	return _rundis$elm_bootstrap$Bootstrap_Internal_Button$Disabled(disabled);
12341};
12342var _rundis$elm_bootstrap$Bootstrap_Button$block = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Block;
12343var _rundis$elm_bootstrap$Bootstrap_Button$outlineDark = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12344	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Dark));
12345var _rundis$elm_bootstrap$Bootstrap_Button$outlineLight = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12346	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Light));
12347var _rundis$elm_bootstrap$Bootstrap_Button$outlineDanger = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12348	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Danger));
12349var _rundis$elm_bootstrap$Bootstrap_Button$outlineWarning = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12350	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Warning));
12351var _rundis$elm_bootstrap$Bootstrap_Button$outlineInfo = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12352	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Info));
12353var _rundis$elm_bootstrap$Bootstrap_Button$outlineSuccess = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12354	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Success));
12355var _rundis$elm_bootstrap$Bootstrap_Button$outlineSecondary = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12356	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Secondary));
12357var _rundis$elm_bootstrap$Bootstrap_Button$outlinePrimary = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12358	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Outlined(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Primary));
12359var _rundis$elm_bootstrap$Bootstrap_Button$roleLink = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12360	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Link));
12361var _rundis$elm_bootstrap$Bootstrap_Button$dark = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12362	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Dark));
12363var _rundis$elm_bootstrap$Bootstrap_Button$light = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12364	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Light));
12365var _rundis$elm_bootstrap$Bootstrap_Button$danger = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12366	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Danger));
12367var _rundis$elm_bootstrap$Bootstrap_Button$warning = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12368	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Warning));
12369var _rundis$elm_bootstrap$Bootstrap_Button$info = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12370	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Info));
12371var _rundis$elm_bootstrap$Bootstrap_Button$success = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12372	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Success));
12373var _rundis$elm_bootstrap$Bootstrap_Button$secondary = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12374	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Secondary));
12375var _rundis$elm_bootstrap$Bootstrap_Button$primary = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Coloring(
12376	_rundis$elm_bootstrap$Bootstrap_Internal_Button$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Button$Primary));
12377var _rundis$elm_bootstrap$Bootstrap_Button$large = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Size(_rundis$elm_bootstrap$Bootstrap_General_Internal$LG);
12378var _rundis$elm_bootstrap$Bootstrap_Button$small = _rundis$elm_bootstrap$Bootstrap_Internal_Button$Size(_rundis$elm_bootstrap$Bootstrap_General_Internal$SM);
12379var _rundis$elm_bootstrap$Bootstrap_Button$attrs = function (attrs) {
12380	return _rundis$elm_bootstrap$Bootstrap_Internal_Button$Attrs(attrs);
12381};
12382var _rundis$elm_bootstrap$Bootstrap_Button$onClick = function (message) {
12383	var defaultOptions = _elm_lang$html$Html_Events$defaultOptions;
12384	return _rundis$elm_bootstrap$Bootstrap_Button$attrs(
12385		{
12386			ctor: '::',
12387			_0: A3(
12388				_elm_lang$html$Html_Events$onWithOptions,
12389				'click',
12390				_elm_lang$core$Native_Utils.update(
12391					defaultOptions,
12392					{preventDefault: true}),
12393				_elm_lang$core$Json_Decode$succeed(message)),
12394			_1: {ctor: '[]'}
12395		});
12396};
12397var _rundis$elm_bootstrap$Bootstrap_Button$checkboxButton = F3(
12398	function (checked, options, children) {
12399		return A2(
12400			_elm_lang$html$Html$label,
12401			{
12402				ctor: '::',
12403				_0: _elm_lang$html$Html_Attributes$classList(
12404					{
12405						ctor: '::',
12406						_0: {ctor: '_Tuple2', _0: 'active', _1: checked},
12407						_1: {ctor: '[]'}
12408					}),
12409				_1: _rundis$elm_bootstrap$Bootstrap_Internal_Button$buttonAttributes(options)
12410			},
12411			{
12412				ctor: '::',
12413				_0: A2(
12414					_elm_lang$html$Html$input,
12415					{
12416						ctor: '::',
12417						_0: _elm_lang$html$Html_Attributes$type_('checkbox'),
12418						_1: {
12419							ctor: '::',
12420							_0: _elm_lang$html$Html_Attributes$checked(checked),
12421							_1: {
12422								ctor: '::',
12423								_0: _elm_lang$html$Html_Attributes$autocomplete(false),
12424								_1: {ctor: '[]'}
12425							}
12426						}
12427					},
12428					{ctor: '[]'}),
12429				_1: children
12430			});
12431	});
12432var _rundis$elm_bootstrap$Bootstrap_Button$radioButton = F3(
12433	function (checked, options, children) {
12434		var hideRadio = A2(_elm_lang$html$Html_Attributes$attribute, 'data-toggle', 'button');
12435		return A2(
12436			_elm_lang$html$Html$label,
12437			{
12438				ctor: '::',
12439				_0: _elm_lang$html$Html_Attributes$classList(
12440					{
12441						ctor: '::',
12442						_0: {ctor: '_Tuple2', _0: 'active', _1: checked},
12443						_1: {ctor: '[]'}
12444					}),
12445				_1: {
12446					ctor: '::',
12447					_0: hideRadio,
12448					_1: _rundis$elm_bootstrap$Bootstrap_Internal_Button$buttonAttributes(options)
12449				}
12450			},
12451			{
12452				ctor: '::',
12453				_0: A2(
12454					_elm_lang$html$Html$input,
12455					{
12456						ctor: '::',
12457						_0: _elm_lang$html$Html_Attributes$type_('radio'),
12458						_1: {
12459							ctor: '::',
12460							_0: _elm_lang$html$Html_Attributes$checked(checked),
12461							_1: {
12462								ctor: '::',
12463								_0: _elm_lang$html$Html_Attributes$autocomplete(false),
12464								_1: {ctor: '[]'}
12465							}
12466						}
12467					},
12468					{ctor: '[]'}),
12469				_1: children
12470			});
12471	});
12472var _rundis$elm_bootstrap$Bootstrap_Button$linkButton = F2(
12473	function (options, children) {
12474		return A2(
12475			_elm_lang$html$Html$a,
12476			{
12477				ctor: '::',
12478				_0: A2(_elm_lang$html$Html_Attributes$attribute, 'role', 'button'),
12479				_1: _rundis$elm_bootstrap$Bootstrap_Internal_Button$buttonAttributes(options)
12480			},
12481			children);
12482	});
12483var _rundis$elm_bootstrap$Bootstrap_Button$button = F2(
12484	function (options, children) {
12485		return A2(
12486			_elm_lang$html$Html$button,
12487			_rundis$elm_bootstrap$Bootstrap_Internal_Button$buttonAttributes(options),
12488			children);
12489	});
12490
12491var _rundis$elm_bootstrap$Bootstrap_CDN$fontAwesome = A3(
12492	_elm_lang$html$Html$node,
12493	'link',
12494	{
12495		ctor: '::',
12496		_0: _elm_lang$html$Html_Attributes$rel('stylesheet'),
12497		_1: {
12498			ctor: '::',
12499			_0: _elm_lang$html$Html_Attributes$href('https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css'),
12500			_1: {ctor: '[]'}
12501		}
12502	},
12503	{ctor: '[]'});
12504var _rundis$elm_bootstrap$Bootstrap_CDN$stylesheet = A3(
12505	_elm_lang$html$Html$node,
12506	'link',
12507	{
12508		ctor: '::',
12509		_0: _elm_lang$html$Html_Attributes$rel('stylesheet'),
12510		_1: {
12511			ctor: '::',
12512			_0: _elm_lang$html$Html_Attributes$href('https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css'),
12513			_1: {ctor: '[]'}
12514		}
12515	},
12516	{ctor: '[]'});
12517
12518var _rundis$elm_bootstrap$Bootstrap_Carousel_SlideInternal$view = function (_p0) {
12519	var _p1 = _p0;
12520	var captionHtml = function () {
12521		var _p2 = _p1._0.caption;
12522		if (_p2.ctor === 'Nothing') {
12523			return _elm_lang$html$Html$text('');
12524		} else {
12525			return A2(
12526				_elm_lang$html$Html$div,
12527				A2(
12528					_elm_lang$core$Basics_ops['++'],
12529					_p2._0.attributes,
12530					{
12531						ctor: '::',
12532						_0: _elm_lang$html$Html_Attributes$class('carousel-caption d-none d-md-block'),
12533						_1: {ctor: '[]'}
12534					}),
12535				_p2._0.children);
12536		}
12537	}();
12538	retu
12538rn A2(
12539		_elm_lang$html$Html$div,
12540		A2(
12541			_elm_lang$core$Basics_ops['++'],
12542			_p1._0.attributes,
12543			{
12544				ctor: '::',
12545				_0: _elm_lang$html$Html_Attributes$class('carousel-item'),
12546				_1: {ctor: '[]'}
12547			}),
12548		function () {
12549			var _p3 = _p1._0.content;
12550			if (_p3.ctor === 'Image') {
12551				return {
12552					ctor: '::',
12553					_0: A2(
12554						_elm_lang$html$Html$img,
12555						A2(
12556							_elm_lang$core$Basics_ops['++'],
12557							_p3._0.attributes,
12558							{
12559								ctor: '::',
12560								_0: _elm_lang$html$Html_Attributes$class('d-block img-fluid'),
12561								_1: {
12562									ctor: '::',
12563									_0: _elm_lang$html$Html_Attributes$src(_p3._0.src),
12564									_1: {ctor: '[]'}
12565								}
12566							}),
12567						{ctor: '[]'}),
12568					_1: {
12569						ctor: '::',
12570						_0: captionHtml,
12571						_1: {ctor: '[]'}
12572					}
12573				};
12574			} else {
12575				return {
12576					ctor: '::',
12577					_0: _p3._0.html,
12578					_1: {
12579						ctor: '::',
12580						_0: captionHtml,
12581						_1: {ctor: '[]'}
12582					}
12583				};
12584			}
12585		}());
12586};
12587var _rundis$elm_bootstrap$Bootstrap_Carousel_SlideInternal$Config = function (a) {
12588	return {ctor: 'Config', _0: a};
12589};
12590var _rundis$elm_bootstrap$Bootstrap_Carousel_SlideInternal$addAttributes = F2(
12591	function (newAttributes, _p4) {
12592		var _p5 = _p4;
12593		var _p6 = _p5._0;
12594		return _rundis$elm_bootstrap$Bootstrap_Carousel_SlideInternal$Config(
12595			_elm_lang$core$Native_Utils.update(
12596				_p6,
12597				{
12598					attributes: A2(_elm_lang$core$Basics_ops['++'], _p6.attributes, newAttributes)
12599				}));
12600	});
12601var _rundis$elm_bootstrap$Bootstrap_Carousel_SlideInternal$Custom = function (a) {
12602	return {ctor: 'Custom', _0: a};
12603};
12604var _rundis$elm_bootstrap$Bootstrap_Carousel_SlideInternal$Image = function (a) {
12605	return {ctor: 'Image', _0: a};
12606};
12607
12608var _rundis$elm_bootstrap$Bootstrap_Carousel_Slide$customContent = function (html) {
12609	return _rundis$elm_bootstrap$Bootstrap_Carousel_SlideInternal$Custom(
12610		{html: html});
12611};
12612var _rundis$elm_bootstrap$Bootstrap_Carousel_Slide$image = F2(
12613	function (attributes, src) {
12614		return _rundis$elm_bootstrap$Bootstrap_Carousel_SlideInternal$Image(
12615			{attributes: attributes, src: src});
12616	});
12617var _rundis$elm_bootstrap$Bootstrap_Carousel_Slide$caption = F3(
12618	function (attributes, children, _p0) {
12619		var _p1 = _p0;
12620		return _rundis$elm_bootstrap$Bootstrap_Carousel_SlideInternal$Config(
12621			_elm_lang$core$Native_Utils.update(
12622				_p1._0,
12623				{
12624					caption: _elm_lang$core$Maybe$Just(
12625						{attributes: attributes, children: children})
12626				}));
12627	});
12628var _rundis$elm_bootstrap$Bootstrap_Carousel_Slide$config = F2(
12629	function (attributes, content) {
12630		return _rundis$elm_bootstrap$Bootstrap_Carousel_SlideInternal$Config(
12631			{attributes: attributes, content: content, caption: _elm_lang$core$Maybe$Nothing});
12632	});
12633
12634var _rundis$elm_bootstrap$Bootstrap_Carousel$transitionClassNames = F2(
12635	function (currentIndex, transition) {
12636		var base = 'carousel-item';
12637		var leftNext = {
12638			directionalClassName: A2(_elm_lang$core$Basics_ops['++'], base, '-left'),
12639			orderClassName: A2(_elm_lang$core$Basics_ops['++'], base, '-next')
12640		};
12641		var rightPrev = {
12642			directionalClassName: A2(_elm_lang$core$Basics_ops['++'], base, '-right'),
12643			orderClassName: A2(_elm_lang$core$Basics_ops['++'], base, '-prev')
12644		};
12645		var _p0 = transition;
12646		switch (_p0.ctor) {
12647			case 'Next':
12648				return leftNext;
12649			case 'Number':
12650				return (_elm_lang$core$Native_Utils.cmp(_p0._0, currentIndex) > 0) ? leftNext : rightPrev;
12651			default:
12652				return rightPrev;
12653		}
12654	});
12655var _rundis$elm_bootstrap$Bootstrap_Carousel$transitionClasses = F4(
12656	function (index, currentIndex, newIndex, tstage) {
12657		if (_elm_lang$core$Native_Utils.eq(index, currentIndex)) {
12658			var _p1 = tstage;
12659			switch (_p1.ctor) {
12660				case 'NotAnimating':
12661					return {
12662						ctor: '::',
12663						_0: {ctor: '_Tuple2', _0: 'active', _1: true},
12664						_1: {ctor: '[]'}
12665					};
12666				case 'Start':
12667					return {
12668						ctor: '::',
12669						_0: {ctor: '_Tuple2', _0: 'active', _1: true},
12670						_1: {ctor: '[]'}
12671					};
12672				default:
12673					var _p2 = A2(_rundis$elm_bootstrap$Bootstrap_Carousel$transitionClassNames, currentIndex, _p1._0);
12674					var directionalClassName = _p2.directionalClassName;
12675					return {
12676						ctor: '::',
12677						_0: {ctor: '_Tuple2', _0: 'active', _1: true},
12678						_1: {
12679							ctor: '::',
12680							_0: {ctor: '_Tuple2', _0: directionalClassName, _1: true},
12681							_1: {ctor: '[]'}
12682						}
12683					};
12684			}
12685		} else {
12686			if (_elm_lang$core$Native_Utils.eq(index, newIndex)) {
12687				var _p3 = tstage;
12688				switch (_p3.ctor) {
12689					case 'NotAnimating':
12690						return {ctor: '[]'};
12691					case 'Start':
12692						return {
12693							ctor: '::',
12694							_0: {
12695								ctor: '_Tuple2',
12696								_0: function (_) {
12697									return _.orderClassName;
12698								}(
12699									A2(_rundis$elm_bootstrap$Bootstrap_Carousel$transitionClassNames, currentIndex, _p3._0)),
12700								_1: true
12701							},
12702							_1: {ctor: '[]'}
12703						};
12704					default:
12705						var _p4 = A2(_rundis$elm_bootstrap$Bootstrap_Carousel$transitionClassNames, currentIndex, _p3._0);
12706						var directionalClassName = _p4.directionalClassName;
12707						var orderClassName = _p4.orderClassName;
12708						return {
12709							ctor: '::',
12710							_0: {ctor: '_Tuple2', _0: directionalClassName, _1: true},
12711							_1: {
12712								ctor: '::',
12713								_0: {ctor: '_Tuple2', _0: orderClassName, _1: true},
12714								_1: {ctor: '[]'}
12715							}
12716						};
12717				}
12718			} else {
12719				return {ctor: '[]'};
12720			}
12721		}
12722	});
12723var _rundis$elm_bootstrap$Bootstrap_Carousel$nextIndex = F3(
12724	function (stage, currentIndex, size) {
12725		var helper = function (transition) {
12726			var _p5 = transition;
12727			switch (_p5.ctor) {
12728				case 'Next':
12729					return A2(_elm_lang$core$Basics_ops['%'], currentIndex + 1, size);
12730				case 'Prev':
12731					return A2(_elm_lang$core$Basics_ops['%'], currentIndex - 1, size);
12732				default:
12733					return A2(_elm_lang$core$Basics_ops['%'], _p5._0, size);
12734			}
12735		};
12736		var _p6 = stage;
12737		switch (_p6.ctor) {
12738			case 'Start':
12739				return helper(_p6._0);
12740			case 'Animating':
12741				return helper(_p6._0);
12742			default:
12743				return currentIndex;
12744		}
12745	});
12746var _rundis$elm_bootstrap$Bootstrap_Carousel$viewSlide = F3(
12747	function (_p7, index, slide) {
12748		var _p8 = _p7;
12749		var _p10 = _p8._0;
12750		var _p9 = _p8._1.currentIndex;
12751		var newIndex = A3(_rundis$elm_bootstrap$Bootstrap_Carousel$nextIndex, _p10, _p9, _p8._1.size);
12752		return _rundis$elm_bootstrap$Bootstrap_Carousel_SlideInternal$view(
12753			A2(
12754				_rundis$elm_bootstrap$Bootstrap_Carousel_SlideInternal$addAttributes,
12755				{
12756					ctor: '::',
12757					_0: _elm_lang$html$Html_Attributes$classList(
12758						A4(_rundis$elm_bootstrap$Bootstrap_Carousel$transitionClasses, index, _p9, newIndex, _p10)),
12759					_1: {ctor: '[]'}
12760				},
12761				slide));
12762	});
12763var _rundis$elm_bootstrap$Bootstrap_Carousel$StateSettings = F7(
12764	function (a, b, c, d, e, f, g) {
12765		return {currentIndex: a, cycling: b, interval: c, hovering: d, keyboard: e, wrap: f, size: g};
12766	});
12767var _rundis$elm_bootstrap$Bootstrap_Carousel$StateOptions = F6(
12768	function (a, b, c, d, e, f) {
12769		return {interval: a, keyboard: b, pauseOnHover: c, cycling: d, wrap: e, startIndex: f};
12770	});
12771var _rundis$elm_bootstrap$Bootstrap_Carousel$State = F2(
12772	function (a, b) {
12773		return {ctor: 'State', _0: a, _1: b};
12774	});
12775var _rundis$elm_bootstrap$Bootstrap_Carousel$NotAnimating = {ctor: 'NotAnimating'};
12776var _rundis$elm_bootstrap$Bootstrap_Carousel$Animating = function (a) {
12777	return {ctor: 'Animating', _0: a};
12778};
12779var _rundis$elm_bootstrap$Bootstrap_Carousel$Start = function (a) {
12780	return {ctor: 'Start', _0: a};
12781};
12782var _rundis$elm_bootstrap$Bootstrap_Carousel$Number = function (a) {
12783	return {ctor: 'Number', _0: a};
12784};
12785var _rundis$elm_bootstrap$Bootstrap_Carousel$Prev = {ctor: 'Prev'};
12786var _rundis$elm_bootstrap$Bootstrap_Carousel$Next = {ctor: 'Next'};
12787var _rundis$elm_bootstrap$Bootstrap_Carousel$WaitForUser = {ctor: 'WaitForUser'};
12788var _rundis$elm_bootstrap$Bootstrap_Carousel$Active = {ctor: 'Active'};
12789var _rundis$elm_bootstrap$Bootstrap_Carousel$defaultStateOptions = {
12790	interval: _elm_lang$core$Maybe$Just(5000),
12791	keyboard: true,
12792	pauseOnHover: true,
12793	cycling: _rundis$elm_bootstrap$Bootstrap_Carousel$Active,
12794	wrap: true,
12795	startIndex: 0
12796};
12797var _rundis$elm_bootstrap$Bootstrap_Carousel$Paused = {ctor: 'Paused'};
12798var _rundis$elm_bootstrap$Bootstrap_Carousel$update = F2(
12799	function (message, _p11) {
12800		var _p12 = _p11;
12801		var _p22 = _p12._0;
12802		var _p21 = _p12._1;
12803		var _p20 = _p12._1.currentIndex;
12804		var _p13 = message;
12805		switch (_p13.ctor) {
12806			case 'Pause':
12807				return A2(
12808					_rundis$elm_bootstrap$Bootstrap_Carousel$State,
12809					_p22,
12810					_elm_lang$core$Native_Utils.update(
12811						_p21,
12812						{cycling: _rundis$elm_bootstrap$Bootstrap_Carousel$Paused}));
12813			case 'Cycle':
12814				return A2(
12815					_rundis$elm_bootstrap$Bootstrap_Carousel$State,
12816					_p22,
12817					_elm_lang$core$Native_Utils.update(
12818						_p21,
12819						{cycling: _rundis$elm_bootstrap$Bootstrap_Carousel$Active}));
12820			case 'SetHover':
12821				return A2(
12822					_rundis$elm_bootstrap$Bootstrap_Carousel$State,
12823					_p22,
12824					_elm_lang$core$Native_Utils.update(
12825						_p21,
12826						{hovering: _p13._0}));
12827			case 'StartTransition':
12828				var _p16 = _p13._0;
12829				var newSettings = function () {
12830					var _p14 = _p21.cycling;
12831					if (_p14.ctor === 'WaitForUser') {
12832						return _elm_lang$core$Native_Utils.update(
12833							_p21,
12834							{cycling: _rundis$elm_bootstrap$Bootstrap_Carousel$Active});
12835					} else {
12836						return _p21;
12837					}
12838				}();
12839				var _p15 = _p22;
12840				if (_p15.ctor === 'NotAnimating') {
12841					return (!_elm_lang$core$Native_Utils.eq(
12842						A3(
12843							_rundis$elm_bootstrap$Bootstrap_Carousel$nextIndex,
12844							_rundis$elm_bootstrap$Bootstrap_Carousel$Start(_p16),
12845							_p20,
12846							_p12._1.size),
12847						_p20)) ? A2(
12848						_rundis$elm_bootstrap$Bootstrap_Carousel$State,
12849						_rundis$elm_bootstrap$Bootstrap_Carousel$Start(_p16),
12850						newSettings) : A2(_rundis$elm_bootstrap$Bootstrap_Carousel$State, _p22, newSettings);
12851				} else {
12852					return A2(_rundis$elm_bootstrap$Bootstrap_Carousel$State, _p22, newSettings);
12853				}
12854			case 'SetAnimating':
12855				var _p17 = _p22;
12856				switch (_p17.ctor) {
12857					case 'NotAnimating':
12858						return _p12;
12859					case 'Start':
12860						return A2(
12861							_rundis$elm_bootstrap$Bootstrap_Carousel$State,
12862							_rundis$elm_bootstrap$Bootstrap_Carousel$Animating(_p17._0),
12863							_p21);
12864					default:
12865						return A2(
12866							_rundis$elm_bootstrap$Bootstrap_Carousel$State,
12867							_rundis$elm_bootstrap$Bootstrap_Carousel$Animating(_p17._0),
12868							_p21);
12869				}
12870			default:
12871				var _p19 = _p13._0;
12872				var _p18 = _p22;
12873				if (_p18.ctor === 'NotAnimating') {
12874					return A2(
12875						_rundis$elm_bootstrap$Bootstrap_Carousel$
12875State,
12876						_rundis$elm_bootstrap$Bootstrap_Carousel$NotAnimating,
12877						_elm_lang$core$Native_Utils.update(
12878							_p21,
12879							{size: _p19}));
12880				} else {
12881					return A2(
12882						_rundis$elm_bootstrap$Bootstrap_Carousel$State,
12883						_rundis$elm_bootstrap$Bootstrap_Carousel$NotAnimating,
12884						_elm_lang$core$Native_Utils.update(
12885							_p21,
12886							{
12887								currentIndex: A3(_rundis$elm_bootstrap$Bootstrap_Carousel$nextIndex, _p22, _p20, _p19),
12888								size: _p19
12889							}));
12890				}
12891		}
12892	});
12893var _rundis$elm_bootstrap$Bootstrap_Carousel$IgnoreHover = {ctor: 'IgnoreHover'};
12894var _rundis$elm_bootstrap$Bootstrap_Carousel$NotHovered = {ctor: 'NotHovered'};
12895var _rundis$elm_bootstrap$Bootstrap_Carousel$initialStateWithOptions = function (options) {
12896	return A2(
12897		_rundis$elm_bootstrap$Bootstrap_Carousel$State,
12898		_rundis$elm_bootstrap$Bootstrap_Carousel$NotAnimating,
12899		{
12900			currentIndex: options.startIndex,
12901			interval: A2(_elm_lang$core$Maybe$withDefault, 0, options.interval),
12902			cycling: options.cycling,
12903			hovering: options.pauseOnHover ? _rundis$elm_bootstrap$Bootstrap_Carousel$NotHovered : _rundis$elm_bootstrap$Bootstrap_Carousel$IgnoreHover,
12904			keyboard: options.keyboard,
12905			wrap: options.wrap,
12906			size: 2
12907		});
12908};
12909var _rundis$elm_bootstrap$Bootstrap_Carousel$initialState = _rundis$elm_bootstrap$Bootstrap_Carousel$initialStateWithOptions(_rundis$elm_bootstrap$Bootstrap_Carousel$defaultStateOptions);
12910var _rundis$elm_bootstrap$Bootstrap_Carousel$Hovered = {ctor: 'Hovered'};
12911var _rundis$elm_bootstrap$Bootstrap_Carousel$SetHover = function (a) {
12912	return {ctor: 'SetHover', _0: a};
12913};
12914var _rundis$elm_bootstrap$Bootstrap_Carousel$EndTransition = function (a) {
12915	return {ctor: 'EndTransition', _0: a};
12916};
12917var _rundis$elm_bootstrap$Bootstrap_Carousel$dirtyHack = function (size) {
12918	return A3(
12919		_elm_lang$html$Html_Keyed$node,
12920		'div',
12921		{ctor: '[]'},
12922		{
12923			ctor: '::',
12924			_0: {
12925				ctor: '_Tuple2',
12926				_0: 'dirtyHack',
12927				_1: A2(
12928					_elm_lang$html$Html$img,
12929					{
12930						ctor: '::',
12931						_0: A2(
12932							_elm_lang$html$Html_Events$on,
12933							'load',
12934							_elm_lang$core$Json_Decode$succeed(
12935								_rundis$elm_bootstrap$Bootstrap_Carousel$EndTransition(size))),
12936						_1: {
12937							ctor: '::',
12938							_0: _elm_lang$html$Html_Attributes$src('http://package.elm-lang.org/assets/favicon.ico'),
12939							_1: {
12940								ctor: '::',
12941								_0: _elm_lang$html$Html_Attributes$style(
12942									{
12943										ctor: '::',
12944										_0: {ctor: '_Tuple2', _0: 'display', _1: 'none'},
12945										_1: {ctor: '[]'}
12946									}),
12947								_1: {ctor: '[]'}
12948							}
12949						}
12950					},
12951					{ctor: '[]'})
12952			},
12953			_1: {ctor: '[]'}
12954		});
12955};
12956var _rundis$elm_bootstrap$Bootstrap_Carousel$SetAnimating = {ctor: 'SetAnimating'};
12957var _rundis$elm_bootstrap$Bootstrap_Carousel$StartTransition = function (a) {
12958	return {ctor: 'StartTransition', _0: a};
12959};
12960var _rundis$elm_bootstrap$Bootstrap_Carousel$subscriptions = F2(
12961	function (model, toMsg) {
12962		var _p23 = model;
12963		switch (_p23._0.ctor) {
12964			case 'NotAnimating':
12965				var _p25 = _p23._1.interval;
12966				var atEnd = (!_p23._1.wrap) && _elm_lang$core$Native_Utils.eq(_p23._1.currentIndex, _p23._1.size - 1);
12967				return (_elm_lang$core$Native_Utils.eq(_p23._1.cycling, _rundis$elm_bootstrap$Bootstrap_Carousel$Active) && ((!_elm_lang$core$Native_Utils.eq(_p23._1.hovering, _rundis$elm_bootstrap$Bootstrap_Carousel$Hovered)) && ((!_elm_lang$core$Native_Utils.eq(_p25, 0)) && (!atEnd)))) ? A2(
12968					_elm_lang$core$Time$every,
12969					_elm_lang$core$Basics$toFloat(_p25) * _elm_lang$core$Time$millisecond,
12970					function (_p24) {
12971						return toMsg(
12972							_rundis$elm_bootstrap$Bootstrap_Carousel$StartTransition(_rundis$elm_bootstrap$Bootstrap_Carousel$Next));
12973					}) : _elm_lang$core$Platform_Sub$none;
12974			case 'Start':
12975				return _elm_lang$animation_frame$AnimationFrame$times(
12976					function (_p26) {
12977						return toMsg(_rundis$elm_bootstrap$Bootstrap_Carousel$SetAnimating);
12978					});
12979			default:
12980				return _elm_lang$core$Platform_Sub$none;
12981		}
12982	});
12983var _rundis$elm_bootstrap$Bootstrap_Carousel$next = _rundis$elm_bootstrap$Bootstrap_Carousel$update(
12984	_rundis$elm_bootstrap$Bootstrap_Carousel$StartTransition(_rundis$elm_bootstrap$Bootstrap_Carousel$Next));
12985var _rundis$elm_bootstrap$Bootstrap_Carousel$prev = _rundis$elm_bootstrap$Bootstrap_Carousel$update(
12986	_rundis$elm_bootstrap$Bootstrap_Carousel$StartTransition(_rundis$elm_bootstrap$Bootstrap_Carousel$Prev));
12987var _rundis$elm_bootstrap$Bootstrap_Carousel$toSlide = function (n) {
12988	return _rundis$elm_bootstrap$Bootstrap_Carousel$update(
12989		_rundis$elm_bootstrap$Bootstrap_Carousel$StartTransition(
12990			_rundis$elm_bootstrap$Bootstrap_Carousel$Number(n)));
12991};
12992var _rundis$elm_bootstrap$Bootstrap_Carousel$controlPrev = A2(
12993	_elm_lang$html$Html$a,
12994	{
12995		ctor: '::',
12996		_0: _elm_lang$html$Html_Attributes$class('carousel-control-prev'),
12997		_1: {
12998			ctor: '::',
12999			_0: A2(_elm_lang$html$Html_Attributes$attribute, 'role', 'button'),
13000			_1: {
13001				ctor: '::',
13002				_0: _elm_lang$html$Html_Events$onClick(
13003					_rundis$elm_bootstrap$Bootstrap_Carousel$StartTransition(_rundis$elm_bootstrap$Bootstrap_Carousel$Prev)),
13004				_1: {ctor: '[]'}
13005			}
13006		}
13007	},
13008	{
13009		ctor: '::',
13010		_0: A2(
13011			_elm_lang$html$Html$span,
13012			{
13013				ctor: '::',
13014				_0: _elm_lang$html$Html_Attributes$class('carousel-control-prev-icon'),
13015				_1: {
13016					ctor: '::',
13017					_0: A2(_elm_lang$html$Html_Attributes$attribute, 'aria-hidden', 'true'),
13018					_1: {ctor: '[]'}
13019				}
13020			},
13021			{ctor: '[]'}),
13022		_1: {
13023			ctor: '::',
13024			_0: A2(
13025				_elm_lang$html$Html$span,
13026				{
13027					ctor: '::',
13028					_0: _elm_lang$html$Html_Attributes$class('sr-only'),
13029					_1: {ctor: '[]'}
13030				},
13031				{
13032					ctor: '::',
13033					_0: _elm_lang$html$Html$text('Previous'),
13034					_1: {ctor: '[]'}
13035				}),
13036			_1: {ctor: '[]'}
13037		}
13038	});
13039var _rundis$elm_bootstrap$Bootstrap_Carousel$controlNext = A2(
13040	_elm_lang$html$Html$a,
13041	{
13042		ctor: '::',
13043		_0: _elm_lang$html$Html_Attributes$class('carousel-control-next'),
13044		_1: {
13045			ctor: '::',
13046			_0: A2(_elm_lang$html$Html_Attributes$attribute, 'role', 'button'),
13047			_1: {
13048				ctor: '::',
13049				_0: _elm_lang$html$Html_Events$onClick(
13050					_rundis$elm_bootstrap$Bootstrap_Carousel$StartTransition(_rundis$elm_bootstrap$Bootstrap_Carousel$Next)),
13051				_1: {ctor: '[]'}
13052			}
13053		}
13054	},
13055	{
13056		ctor: '::',
13057		_0: A2(
13058			_elm_lang$html$Html$span,
13059			{
13060				ctor: '::',
13061				_0: _elm_lang$html$Html_Attributes$class('carousel-control-next-icon'),
13062				_1: {
13063					ctor: '::',
13064					_0: A2(_elm_lang$html$Html_Attributes$attribute, 'aria-hidden', 'true'),
13065					_1: {ctor: '[]'}
13066				}
13067			},
13068			{ctor: '[]'}),
13069		_1: {
13070			ctor: '::',
13071			_0: A2(
13072				_elm_lang$html$Html$span,
13073				{
13074					ctor: '::',
13075					_0: _elm_lang$html$Html_Attributes$class('sr-only'),
13076					_1: {ctor: '[]'}
13077				},
13078				{
13079					ctor: '::',
13080					_0: _elm_lang$html$Html$text('Next'),
13081					_1: {ctor: '[]'}
13082				}),
13083			_1: {ctor: '[]'}
13084		}
13085	});
13086var _rundis$elm_bootstrap$Bootstrap_Carousel$indicators = F2(
13087	function (size, activeIndex) {
13088		var item = function (n) {
13089			return A2(
13090				_elm_lang$html$Html$li,
13091				{
13092					ctor: '::',
13093					_0: _elm_lang$html$Html_Attributes$classList(
13094						{
13095							ctor: '::',
13096							_0: {
13097								ctor: '_Tuple2',
13098								_0: 'active',
13099								_1: _elm_lang$core$Native_Utils.eq(n, activeIndex)
13100							},
13101							_1: {ctor: '[]'}
13102						}),
13103					_1: {
13104						ctor: '::',
13105						_0: _elm_lang$html$Html_Events$onClick(
13106							_rundis$elm_bootstrap$Bootstrap_Carousel$StartTransition(
13107								_rundis$elm_bootstrap$Bootstrap_Carousel$Number(n))),
13108						_1: {ctor: '[]'}
13109					}
13110				},
13111				{ctor: '[]'});
13112		};
13113		var items = A2(
13114			_elm_lang$core$List$map,
13115			item,
13116			A2(_elm_lang$core$List$range, 0, size - 1));
13117		return A2(
13118			_elm_lang$html$Html$ol,
13119			{
13120				ctor: '::',
13121				_0: _elm_lang$html$Html_Attributes$class('carousel-indicators'),
13122				_1: {ctor: '[]'}
13123			},
13124			items);
13125	});
13126var _rundis$elm_bootstrap$Bootstrap_Carousel$view = F2(
13127	function (_p28, _p27) {
13128		var _p29 = _p28;
13129		var _p32 = _p29._1.currentIndex;
13130		var _p30 = _p27;
13131		var _p31 = _p30._0;
13132		var slidesHtml = A2(
13133			_elm_lang$html$Html$div,
13134			{
13135				ctor: '::',
13136				_0: _elm_lang$html$Html_Attributes$class('carousel-inner'),
13137				_1: {
13138					ctor: '::',
13139					_0: A2(_elm_lang$html$Html_Attributes$attribute, 'role', 'listbox'),
13140					_1: {ctor: '[]'}
13141				}
13142			},
13143			A2(
13144				_elm_lang$core$List$indexedMap,
13145				_rundis$elm_bootstrap$Bootstrap_Carousel$viewSlide(_p29),
13146				_p31.slides));
13147		var size = _elm_lang$core$List$length(_p31.slides);
13148		var indicatorsHtml = _p31.indicators ? A2(
13149			_rundis$elm_bootstrap$Bootstrap_Carousel$indicators,
13150			size,
13151			A3(_rundis$elm_bootstrap$Bootstrap_Carousel$nextIndex, _p29._0, _p32, size)) : _elm_lang$html$Html$text('');
13152		var controlsHtml = _p31.controls ? ((_p29._1.wrap || ((!_elm_lang$core$Native_Utils.eq(_p32, 0)) && (!_elm_lang$core$Native_Utils.eq(_p32, size - 1)))) ? {
13153			ctor: '::',
13154			_0: _rundis$elm_bootstrap$Bootstrap_Carousel$controlPrev,
13155			_1: {
13156				ctor: '::',
13157				_0: _rundis$elm_bootstrap$Bootstrap_Carousel$controlNext,
13158				_1: {ctor: '[]'}
13159			}
13160		} : (_elm_lang$core$Native_Utils.eq(_p32, 0) ? {
13161			ctor: '::',
13162			_0: _rundis$elm_bootstrap$Bootstrap_Carousel$controlNext,
13163			_1: {ctor: '[]'}
13164		} : {
13165			ctor: '::',
13166			_0: _rundis$elm_bootstrap$Bootstrap_Carousel$controlPrev,
13167			_1: {ctor: '[]'}
13168		})) : {ctor: '[]'};
13169		var defaultCarouselAttributes = A2(
13170			_elm_lang$core$Basics_ops['++'],
13171			{
13172				ctor: '::',
13173				_0: _elm_lang$html$Html_Attributes$class('carousel slide'),
13174				_1: {
13175					ctor: '::',
13176					_0: A2(
13177						_elm_lang$html$Html_Events$on,
13178						'transitionend',
13179						_elm_lang$core$Json_Decode$succeed(
13180							_p31.toMsg(
13181								_rundis$elm_bootstrap$Bootstrap_Carousel$EndTransition(size)))),
13182					_1: {ctor: '[]'}
13183				}
13184			},
13185			(!_elm_lang$core$Native_Utils.eq(_p29._1.hovering, _rundis$elm_bootstrap$Bootstrap_Carousel$IgnoreHover)) ? {
13186				ctor: '::',
13187				_0: _elm_lang$html$Html_Events$onMouseEnter(
13188					_p31.toMsg(
13189						_rundis$elm_bootstrap$Bootstrap_Carousel$SetHover(_rundis$elm_bootstrap$Bootstrap_Carousel$Hovered))),
13190				_1: {
13191					ctor: '::',
13192					_0: _elm_lang$html$Html_Events$onMouseLeave(
13193						_p31.toMsg(
13194							_rundis$elm_bootstrap$Bootstrap_Carousel$SetHover(_rundis$elm_bootstrap$Bootstrap_Carousel$NotHovered))),
13195					_1: {ctor: '[]'}
13196				}
13197			} : {ctor: '[]'});
13198		return A2(
13199			_elm_lang$html$Html$div,
13200			A2(_elm_lang$core$Basics_ops['++'], _p31.attributes, defaultCarouselAttributes),
13201			{
13202				ctor: '::',
13203				_0: slidesHtml,
13204				_1: A2(
13205					_elm_lang$core$List$map,
13206					_elm_lang$html$Html$map(_p31.toMsg),
13207					A2(
13208						_elm_lang$core$Basics_ops['++'],
13209						{
13210							ctor: '::',
13211							_0: _rundis$elm_bootstrap$Bootstrap_Carousel$dirtyHack(size),
13212							_1: {
13213								ctor: '::',
13214								_0: indicatorsHtml,
13215								_1: {ctor: '[]'}
13216							}
13217						},
13218						controlsHtml))
13219			});
13220	});
13221var _rundis$elm_bootstrap$Bootstrap_Carousel$Pause = {ctor: 'Pause'};
13222var _rundis$elm_bootstrap$Bootstrap_Carousel$pause = _rundis$elm_bootstrap$Bootstrap_Carousel$update(_rundis$elm_bootstrap$Bootstrap_Carousel$Pause);
13223var _rundis$elm_bootstrap$Bootstrap_Carousel$Cycle = {ctor: 'Cycle'};
13224var _rundis$elm_bootstrap$Bootstrap_Carousel$cycle = _rundis$elm_bootstrap$Bootstrap_Carousel$update(_rundis$elm_bootstrap$Bootstrap_Carousel$Cycle);
13225var _rundis$elm_bootstrap$Bootstrap_Carousel$Config = function (a) {
13226	return {ctor: 'Config', _0: a};
13227};
13228var _rundis$elm_bootstrap$Bootstrap_Carousel$config = F2(
13229	function (toMsg, attributes) {
13230		return _rundis$elm_bootstrap$Bootstrap_Carousel$Config(
13231			{
13232				attributes: attributes,
13233				toMsg: toMsg,
13234				slides: {ctor: '[]'},
13235				controls: false,
13236				indicators: false
13237			});
13238	});
13239var _rundis$elm_bootstrap$Bootstrap_Carousel$slides = F2(
13240	function (newSlides, _p33) {
13241		var _p34 = _p33;
13242		return _rundis$elm_bootstrap$Bootstrap_Carousel$Config(
13243			_elm_lang$core$Native_Utils.update(
13244				_p34._0,
13245				{slides: newSlides}));
13246	});
13247var _rundis$elm_bootstrap$Bootstrap_Carousel$withIndicators = function (_p35) {
13248	var _p36 = _p35;
13249	return _rundis$elm_bootstrap$Bootstrap_Carousel$Config(
13250		_elm_lang$core$Native_Utils.update(
13251			_p36._0,
13252			{indicators: true}));
13253};
13254var _rundis$elm_bootstrap$Bootstrap_Carousel$withControls = function (_p37) {
13255	var _p38 = _p37;
13256	return _rundis$elm_bootstrap$Bootstrap_Carousel$Config(
13257		_elm_lang$core$Native_Utils.update(
13258			_p38._0,
13259			{controls: true}));
13260};
13261
13262var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$verticalAlignOption = function (align) {
13263	var _p0 = align;
13264	switch (_p0.ctor) {
13265		case 'Top':
13266			return 'start';
13267		case 'Middle':
13268			return 'center';
13269		default:
13270			return 'end';
13271	}
13272};
13273var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$orderColOption = function (size) {
13274	var _p1 = size;
13275	switch (_p1.ctor) {
13276		case 'OrderFirst':
13277			return 'first';
13278		case 'Order1':
13279			return '1';
13280		case 'Order2':
13281			return '2';
13282		case 'Order3':
13283			return '3';
13284		case 'Order4':
13285			return '4';
13286		case 'Order5':
13287			return '5';
13288		case 'Order6':
13289			return '6';
13290		case 'Order7':
13291			return '7';
13292		case 'Order8':
13293			return '8';
13294		case 'Order9':
13295			return '9';
13296		case 'Order10':
13297			return '10';
13298		case 'Order11':
13299			return '11';
13300		case 'Order12':
13301			return '12';
13302		default:
13303			return 'last';
13304	}
13305};
13306var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$moveCountOption = function (size) {
13307	var _p2 = size;
13308	switch (_p2.ctor) {
13309		case 'Move0':
13310			return '0';
13311		case 'Move1':
13312			return '1';
13313		case 'Move2':
13314			return '2';
13315		case 'Move3':
13316			return '3';
13317		case 'Move4':
13318			return '4';
13319		case 'Move5':
13320			return '5';
13321		case 'Move6':
13322			return '6';
13323		case 'Move7':
13324			return '7';
13325		case 'Move8':
13326			return '8';
13327		case 'Move9':
13328			return '9';
13329		case 'Move10':
13330			return '10';
13331		case 'Move11':
13332			return '11';
13333		default:
13334			return '12';
13335	}
13336};
13337var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$offsetCountOption = function (size) {
13338	var _p3 = size;
13339	switch (_p3.ctor) {
13340		case 'Offset0':
13341			return '0';
13342		case 'Offset1':
13343			return '1';
13344		case 'Offset2':
13345			return '2';
13346		case 'Offset3':
13347			return '3';
13348		case 'Offset4':
13349			return '4';
13350		case 'Offset5':
13351			return '5';
13352		case 'Offset6':
13353			return '6';
13354		case 'Offset7':
13355			return '7';
13356		case 'Offset8':
13357			return '8';
13358		case 'Offset9':
13359			return '9';
13360		case 'Offset10':
13361			return '10';
13362		default:
13363			return '11';
13364	}
13365};
13366var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$columnCountOption = function (size) {
13367	var _p4 = size;
13368	switch (_p4.ctor) {
13369		case 'Col':
13370			return _elm_lang$core$Maybe$Nothing;
13371		case 'Col1':
13372			return _elm_lang$core$Maybe$Just('1');
13373		case 'Col2':
13374			return _elm_lang$core$Maybe$Just('2');
13375		case 'Col3':
13376			return _elm_lang$core$Maybe$Just('3');
13377		case 'Col4':
13378			return _elm_lang$core$Maybe$Just('4');
13379		case 'Col5':
13380			return _elm_lang$core$Maybe$Just('5');
13381		case 'Col6':
13382			return _elm_lang$core$Maybe$Just('6');
13383		case 'Col7':
13384			return _elm_lang$core$Maybe$Just('7');
13385		case 'Col8':
13386			return _elm_lang$core$Maybe$Just('8');
13387		case 'Col9':
13388			return _elm_lang$core$Maybe$Just('9');
13389		case 'Col10':
13390			return _elm_lang$core$Maybe$Just('10');
13391		case 'Col11':
13392			return _elm_lang$core$Maybe$Just('11');
13393		case 'Col12':
13394			return _elm_lang$core$Maybe$Just('12');
13395		default:
13396			return _elm_lang$core$Maybe$Just('auto');
13397	}
13398};
13399var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$screenSizeToPartialString = function (screenSize) {
13400	var _p5 = _rundis$elm_bootstrap$Bootstrap_General_Internal$screenSizeOption(screenSize);
13401	if (_p5.ctor === 'Just') {
13402		return A2(
13403			_elm_lang$core$Basics_ops['++'],
13404			'-',
13405			A2(_elm_lang$core$Basics_ops['++'], _p5._0, '-'));
13406	} else {
13407		return '-';
13408	}
13409};
13410var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$hAlignsToAttributes = function (aligns) {
13411	var align = function (a) {
13412		return A2(_elm_lang$core$Maybe$map, _rundis$elm_bootstrap$Bootstrap_General_Internal$hAlignClass, a);
13413	};
13414	return A2(
13415		_elm_lang$core$List$filterMap,
13416		_elm_lang$core$Basics$identity,
13417		A2(_elm_lang$core$List$map, align, aligns));
13418};
13419var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$vAlignClass = F2(
13420	function (prefix, _p6) {
13421		var _p7 = _p6;
13422		return _elm_lang$html$Html_Attributes$class(
13423			A2(
13424				_elm_lang$core$Basics_ops['++'],
13425				prefix,
13426				A2(
13427					_elm_lang$core$Basics_ops['++'],
13428					A2(
13429						_elm_lang$core$Maybe$withDefault,
13430						'',
13431						A2(
13432							_elm_lang$core$Maybe$map,
13433							function (v) {
13434								return A2(_elm_lang$core$Basics_ops['++'], v, '-');
13435							},
13436							_rundis$elm_bootstrap$Bootstrap_General_Internal$screenSizeOption(_p7.screenSize))),
13437					_rundis$elm_bootstrap$Bootstrap_Grid_Internal$verticalAlignOption(_p7.align))));
13438	});
13439var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$vAlignsToAttributes = F2(
13440	function (prefix, aligns) {
13441		var align = function (a) {
13442			return A2(
13443				_elm_lang$core$Maybe$map,
13444				_rundis$elm_bootstrap$Bootstrap_Grid_Internal$vAlignClass(prefix),
13445				a);
13446		};
13447		return A2(
13448			_elm_lang$core$List$filterMap,
13449			_elm_lang$core$Basics$identity,
13450			A2(_elm_lang$core$List$map, align, aligns));
13451	});
13452var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$orderToAttributes = function (orders) {
13453	var order = function (m) {
13454		var _p8 = m;
13455		if (_p8.ctor === 'Just') {
13456			return _elm_lang$core$Maybe$Just(
13457				_elm_lang$html$Html_Attributes$class(
13458					A2(
13459						_elm_lang$core$Basics_ops['++'],
13460						'order',
13461						A2(
13462							_elm_lang$core$Basics_ops['++'],
13463							_rundis$elm_bootstrap$Bootstrap_Grid_Internal$screenSizeToPartialString(_p8._0.screenSize),
13464							_rundis$elm_bootstrap$Bootstrap_Grid_Internal$orderColOption(_p8._0.moveCount)))));
13465		} else {
13466			return _elm_lang$core$Maybe$Nothing;
13467		}
13468	};
13469	return A2(
13470		_elm_lang$core$List$filterMap,
13471		_elm_lang$core$Basics$identity,
13472		A2(_elm_lang$core$List$map, order, orders));
13473};
13474var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$pushesToAttributes = function (pushes) {
13475	var push = function (m) {
13476		var _p9 = m;
13477		if (_p9.ctor === 'Just') {
13478			return _elm_lang$core$Maybe$Just(
13479				_elm_lang$html$Html_Attributes$class(
13480					A2(
13481						_elm_lang$core$Basics_ops['++'],
13482						'push',
13483						A2(
13484							_elm_lang$core$Basics_ops['++'],
13485							_rundis$elm_bootstrap$Bootstrap_Grid_Internal$screenSizeToPartialString(_p9._0.screenSize),
13486							_rundis$elm_bootstrap$Bootstrap_Grid_Internal$moveCountOption(_p9._0.moveCount)))));
13487		} else {
13488			return _elm_lang$core$Maybe$Nothing;
13489		}
13490	};
13491	return A2(
13492		_elm_lang$core$List$filterMap,
13493		_elm_lang$core$Basics$identity,
13494		A2(_elm_lang$core$List$map, push, pushes));
13495};
13496var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$pullsToAttributes = function (pulls) {
13497	var pull = function (m) {
13498		var _p10 = m;
13499		if (_p10.ctor === 'Just') {
13500			return _elm_lang$core$Maybe$Just(
13501				_elm_lang$html$Html_Attributes$class(
13502					A2(
13503						_elm_lang$core$Basics_ops['++'],
13504						'pull',
13505						A2(
13506							_elm_lang$core$Basics_ops['++'],
13507							_rundis$elm_bootstrap$Bootstrap_Grid_Internal$screenSizeToPartialString(_p10._0.screenSize),
13508							_rundis$elm_bootstrap$Bootstrap_Grid_Internal$moveCountOption(_p10._0.moveC
13508ount)))));
13509		} else {
13510			return _elm_lang$core$Maybe$Nothing;
13511		}
13512	};
13513	return A2(
13514		_elm_lang$core$List$filterMap,
13515		_elm_lang$core$Basics$identity,
13516		A2(_elm_lang$core$List$map, pull, pulls));
13517};
13518var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$offsetClass = function (_p11) {
13519	var _p12 = _p11;
13520	return _elm_lang$html$Html_Attributes$class(
13521		A2(
13522			_elm_lang$core$Basics_ops['++'],
13523			'offset',
13524			A2(
13525				_elm_lang$core$Basics_ops['++'],
13526				_rundis$elm_bootstrap$Bootstrap_Grid_Internal$screenSizeToPartialString(_p12.screenSize),
13527				_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offsetCountOption(_p12.offsetCount))));
13528};
13529var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$offsetsToAttributes = function (offsets) {
13530	var offset = function (m) {
13531		return A2(_elm_lang$core$Maybe$map, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$offsetClass, m);
13532	};
13533	return A2(
13534		_elm_lang$core$List$filterMap,
13535		_elm_lang$core$Basics$identity,
13536		A2(_elm_lang$core$List$map, offset, offsets));
13537};
13538var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$colWidthClass = function (_p13) {
13539	var _p14 = _p13;
13540	return _elm_lang$html$Html_Attributes$class(
13541		A2(
13542			_elm_lang$core$Basics_ops['++'],
13543			'col',
13544			A2(
13545				_elm_lang$core$Basics_ops['++'],
13546				A2(
13547					_elm_lang$core$Maybe$withDefault,
13548					'',
13549					A2(
13550						_elm_lang$core$Maybe$map,
13551						function (v) {
13552							return A2(_elm_lang$core$Basics_ops['++'], '-', v);
13553						},
13554						_rundis$elm_bootstrap$Bootstrap_General_Internal$screenSizeOption(_p14.screenSize))),
13555				A2(
13556					_elm_lang$core$Maybe$withDefault,
13557					'',
13558					A2(
13559						_elm_lang$core$Maybe$map,
13560						function (v) {
13561							return A2(_elm_lang$core$Basics_ops['++'], '-', v);
13562						},
13563						_rundis$elm_bootstrap$Bootstrap_Grid_Internal$columnCountOption(_p14.columnCount))))));
13564};
13565var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$colWidthsToAttributes = function (widths) {
13566	var width = function (w) {
13567		return A2(_elm_lang$core$Maybe$map, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$colWidthClass, w);
13568	};
13569	return A2(
13570		_elm_lang$core$List$filterMap,
13571		_elm_lang$core$Basics$identity,
13572		A2(_elm_lang$core$List$map, width, widths));
13573};
13574var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$defaultRowOptions = {
13575	attributes: {ctor: '[]'},
13576	vAlignXs: _elm_lang$core$Maybe$Nothing,
13577	vAlignSm: _elm_lang$core$Maybe$Nothing,
13578	vAlignMd: _elm_lang$core$Maybe$Nothing,
13579	vAlignLg: _elm_lang$core$Maybe$Nothing,
13580	vAlignXl: _elm_lang$core$Maybe$Nothing,
13581	hAlignXs: _elm_lang$core$Maybe$Nothing,
13582	hAlignSm: _elm_lang$core$Maybe$Nothing,
13583	hAlignMd: _elm_lang$core$Maybe$Nothing,
13584	hAlignLg: _elm_lang$core$Maybe$Nothing,
13585	hAlignXl: _elm_lang$core$Maybe$Nothing
13586};
13587var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$defaultColOptions = {
13588	attributes: {ctor: '[]'},
13589	textAlign: _elm_lang$core$Maybe$Nothing,
13590	widthXs: _elm_lang$core$Maybe$Nothing,
13591	widthSm: _elm_lang$core$Maybe$Nothing,
13592	widthMd: _elm_lang$core$Maybe$Nothing,
13593	widthLg: _elm_lang$core$Maybe$Nothing,
13594	widthXl: _elm_lang$core$Maybe$Nothing,
13595	offsetXs: _elm_lang$core$Maybe$Nothing,
13596	offsetSm: _elm_lang$core$Maybe$Nothing,
13597	offsetMd: _elm_lang$core$Maybe$Nothing,
13598	offsetLg: _elm_lang$core$Maybe$Nothing,
13599	offsetXl: _elm_lang$core$Maybe$Nothing,
13600	pullXs: _elm_lang$core$Maybe$Nothing,
13601	pullSm: _elm_lang$core$Maybe$Nothing,
13602	pullMd: _elm_lang$core$Maybe$Nothing,
13603	pullLg: _elm_lang$core$Maybe$Nothing,
13604	pullXl: _elm_lang$core$Maybe$Nothing,
13605	pushXs: _elm_lang$core$Maybe$Nothing,
13606	pushSm: _elm_lang$core$Maybe$Nothing,
13607	pushMd: _elm_lang$core$Maybe$Nothing,
13608	pushLg: _elm_lang$core$Maybe$Nothing,
13609	pushXl: _elm_lang$core$Maybe$Nothing,
13610	orderXs: _elm_lang$core$Maybe$Nothing,
13611	orderSm: _elm_lang$core$Maybe$Nothing,
13612	orderMd: _elm_lang$core$Maybe$Nothing,
13613	orderLg: _elm_lang$core$Maybe$Nothing,
13614	orderXl: _elm_lang$core$Maybe$Nothing,
13615	alignXs: _elm_lang$core$Maybe$Nothing,
13616	alignSm: _elm_lang$core$Maybe$Nothing,
13617	alignMd: _elm_lang$core$Maybe$Nothing,
13618	alignLg: _elm_lang$core$Maybe$Nothing,
13619	alignXl: _elm_lang$core$Maybe$Nothing
13620};
13621var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyRowHAlign = F2(
13622	function (align, options) {
13623		var _p15 = align.screenSize;
13624		switch (_p15.ctor) {
13625			case 'XS':
13626				return _elm_lang$core$Native_Utils.update(
13627					options,
13628					{
13629						hAlignXs: _elm_lang$core$Maybe$Just(align)
13630					});
13631			case 'SM':
13632				return _elm_lang$core$Native_Utils.update(
13633					options,
13634					{
13635						hAlignSm: _elm_lang$core$Maybe$Just(align)
13636					});
13637			case 'MD':
13638				return _elm_lang$core$Native_Utils.update(
13639					options,
13640					{
13641						hAlignMd: _elm_lang$core$Maybe$Just(align)
13642					});
13643			case 'LG':
13644				return _elm_lang$core$Native_Utils.update(
13645					options,
13646					{
13647						hAlignLg: _elm_lang$core$Maybe$Just(align)
13648					});
13649			default:
13650				return _elm_lang$core$Native_Utils.update(
13651					options,
13652					{
13653						hAlignXl: _elm_lang$core$Maybe$Just(align)
13654					});
13655		}
13656	});
13657var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyRowVAlign = F2(
13658	function (align, options) {
13659		var _p16 = align.screenSize;
13660		switch (_p16.ctor) {
13661			case 'XS':
13662				return _elm_lang$core$Native_Utils.update(
13663					options,
13664					{
13665						vAlignXs: _elm_lang$core$Maybe$Just(align)
13666					});
13667			case 'SM':
13668				return _elm_lang$core$Native_Utils.update(
13669					options,
13670					{
13671						vAlignSm: _elm_lang$core$Maybe$Just(align)
13672					});
13673			case 'MD':
13674				return _elm_lang$core$Native_Utils.update(
13675					options,
13676					{
13677						vAlignMd: _elm_lang$core$Maybe$Just(align)
13678					});
13679			case 'LG':
13680				return _elm_lang$core$Native_Utils.update(
13681					options,
13682					{
13683						vAlignLg: _elm_lang$core$Maybe$Just(align)
13684					});
13685			default:
13686				return _elm_lang$core$Native_Utils.update(
13687					options,
13688					{
13689						vAlignXl: _elm_lang$core$Maybe$Just(align)
13690					});
13691		}
13692	});
13693var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyRowOption = F2(
13694	function (modifier, options) {
13695		var _p17 = modifier;
13696		switch (_p17.ctor) {
13697			case 'RowAttrs':
13698				return _elm_lang$core$Native_Utils.update(
13699					options,
13700					{
13701						attributes: A2(_elm_lang$core$Basics_ops['++'], options.attributes, _p17._0)
13702					});
13703			case 'RowVAlign':
13704				return A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyRowVAlign, _p17._0, options);
13705			default:
13706				return A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyRowHAlign, _p17._0, options);
13707		}
13708	});
13709var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColAlign = F2(
13710	function (align, options) {
13711		var _p18 = align.screenSize;
13712		switch (_p18.ctor) {
13713			case 'XS':
13714				return _elm_lang$core$Native_Utils.update(
13715					options,
13716					{
13717						alignXs: _elm_lang$core$Maybe$Just(align)
13718					});
13719			case 'SM':
13720				return _elm_lang$core$Native_Utils.update(
13721					options,
13722					{
13723						alignSm: _elm_lang$core$Maybe$Just(align)
13724					});
13725			case 'MD':
13726				return _elm_lang$core$Native_Utils.update(
13727					options,
13728					{
13729						alignMd: _elm_lang$core$Maybe$Just(align)
13730					});
13731			case 'LG':
13732				return _elm_lang$core$Native_Utils.update(
13733					options,
13734					{
13735						alignLg: _elm_lang$core$Maybe$Just(align)
13736					});
13737			default:
13738				return _elm_lang$core$Native_Utils.update(
13739					options,
13740					{
13741						alignXl: _elm_lang$core$Maybe$Just(align)
13742					});
13743		}
13744	});
13745var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColOrder = F2(
13746	function (order, options) {
13747		var _p19 = order.screenSize;
13748		switch (_p19.ctor) {
13749			case 'XS':
13750				return _elm_lang$core$Native_Utils.update(
13751					options,
13752					{
13753						orderXs: _elm_lang$core$Maybe$Just(order)
13754					});
13755			case 'SM':
13756				return _elm_lang$core$Native_Utils.update(
13757					options,
13758					{
13759						orderSm: _elm_lang$core$Maybe$Just(order)
13760					});
13761			case 'MD':
13762				return _elm_lang$core$Native_Utils.update(
13763					options,
13764					{
13765						orderMd: _elm_lang$core$Maybe$Just(order)
13766					});
13767			case 'LG':
13768				return _elm_lang$core$Native_Utils.update(
13769					options,
13770					{
13771						orderLg: _elm_lang$core$Maybe$Just(order)
13772					});
13773			default:
13774				return _elm_lang$core$Native_Utils.update(
13775					options,
13776					{
13777						orderXl: _elm_lang$core$Maybe$Just(order)
13778					});
13779		}
13780	});
13781var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColPush = F2(
13782	function (push, options) {
13783		var _p20 = push.screenSize;
13784		switch (_p20.ctor) {
13785			case 'XS':
13786				return _elm_lang$core$Native_Utils.update(
13787					options,
13788					{
13789						pushXs: _elm_lang$core$Maybe$Just(push)
13790					});
13791			case 'SM':
13792				return _elm_lang$core$Native_Utils.update(
13793					options,
13794					{
13795						pushSm: _elm_lang$core$Maybe$Just(push)
13796					});
13797			case 'MD':
13798				return _elm_lang$core$Native_Utils.update(
13799					options,
13800					{
13801						pushMd: _elm_lang$core$Maybe$Just(push)
13802					});
13803			case 'LG':
13804				return _elm_lang$core$Native_Utils.update(
13805					options,
13806					{
13807						pushLg: _elm_lang$core$Maybe$Just(push)
13808					});
13809			default:
13810				return _elm_lang$core$Native_Utils.update(
13811					options,
13812					{
13813						pushXl: _elm_lang$core$Maybe$Just(push)
13814					});
13815		}
13816	});
13817var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColPull = F2(
13818	function (pull, options) {
13819		var _p21 = pull.screenSize;
13820		switch (_p21.ctor) {
13821			case 'XS':
13822				return _elm_lang$core$Native_Utils.update(
13823					options,
13824					{
13825						pullXs: _elm_lang$core$Maybe$Just(pull)
13826					});
13827			case 'SM':
13828				return _elm_lang$core$Native_Utils.update(
13829					options,
13830					{
13831						pullSm: _elm_lang$core$Maybe$Just(pull)
13832					});
13833			case 'MD':
13834				return _elm_lang$core$Native_Utils.update(
13835					options,
13836					{
13837						pullMd: _elm_lang$core$Maybe$Just(pull)
13838					});
13839			case 'LG':
13840				return _elm_lang$core$Native_Utils.update(
13841					options,
13842					{
13843						pullLg: _elm_lang$core$Maybe$Just(pull)
13844					});
13845			default:
13846				return _elm_lang$core$Native_Utils.update(
13847					options,
13848					{
13849						pullXl: _elm_lang$core$Maybe$Just(pull)
13850					});
13851		}
13852	});
13853var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColOffset = F2(
13854	function (offset, options) {
13855		var _p22 = offset.screenSize;
13856		switch (_p22.ctor) {
13857			case 'XS':
13858				return _elm_lang$core$Native_Utils.update(
13859					options,
13860					{
13861						offsetXs: _elm_lang$core$Maybe$Just(offset)
13862					});
13863			case 'SM':
13864				return _elm_lang$core$Native_Utils.update(
13865					options,
13866					{
13867						offsetSm: _elm_lang$core$Maybe$Just(offset)
13868					});
13869			case 'MD':
13870				return _elm_lang$core$Native_Utils.update(
13871					options,
13872					{
13873						offsetMd: _elm_lang$core$Maybe$Just(offset)
13874					});
13875			case 'LG':
13876				return _elm_lang$core$Native_Utils.update(
13877					options,
13878					{
13879						offsetLg: _elm_lang$core$Maybe$Just(offset)
13880					});
13881			default:
13882				return _elm_lang$core$Native_Utils.update(
13883					options,
13884					{
13885						offsetXl: _elm_lang$core$Maybe$Just(offset)
13886					});
13887		}
13888	});
13889var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColWidth = F2(
13890	function (width, options) {
13891		var _p23 = width.screenSize;
13892		switch (_p23.ctor) {
13893			case 'XS':
13894				return _elm_lang$core$Native_Utils.update(
13895					options,
13896					{
13897						widthXs: _elm_lang$core$Maybe$Just(width)
13898					});
13899			case 'SM':
13900				return _elm_lang$core$Native_Utils.update(
13901					options,
13902					{
13903						widthSm: _elm_lang$core$Maybe$Just(width)
13904					});
13905			case 'MD':
13906				return _elm_lang$core$Native_Utils.update(
13907					options,
13908					{
13909						widthMd: _elm_lang$core$Maybe$Just(width)
13910					});
13911			case 'LG':
13912				return _elm_lang$core$Native_Utils.update(
13913					options,
13914					{
13915						widthLg: _elm_lang$core$Maybe$Just(width)
13916					});
13917			default:
13918				return _elm_lang$core$Native_Utils.update(
13919					options,
13920					{
13921						widthXl: _elm_lang$core$Maybe$Just(width)
13922					});
13923		}
13924	});
13925var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColOption = F2(
13926	function (modifier, options) {
13927		var _p24 = modifier;
13928		switch (_p24.ctor) {
13929			case 'ColAttrs':
13930				return _elm_lang$core$Native_Utils.update(
13931					options,
13932					{
13933						attributes: A2(_elm_lang$core$Basics_ops['++'], options.attributes, _p24._0)
13934					});
13935			case 'ColWidth':
13936				return A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColWidth, _p24._0, options);
13937			case 'ColOffset':
13938				return A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColOffset, _p24._0, options);
13939			case 'ColPull':
13940				return A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColPull, _p24._0, options);
13941			case 'ColPush':
13942				return A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColPush, _p24._0, options);
13943			case 'ColOrder':
13944				return A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColOrder, _p24._0, options);
13945			case 'ColAlign':
13946				return A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColAlign, _p24._0, options);
13947			default:
13948				return _elm_lang$core$Native_Utils.update(
13949					options,
13950					{
13951						textAlign: _elm_lang$core$Maybe$Just(_p24._0)
13952					});
13953		}
13954	});
13955var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowAttributes = function (modifiers) {
13956	var options = A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyRowOption, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$defaultRowOptions, modifiers);
13957	return A2(
13958		_elm_lang$core$Basics_ops['++'],
13959		{
13960			ctor: '::',
13961			_0: _elm_lang$html$Html_Attributes$class('row'),
13962			_1: {ctor: '[]'}
13963		},
13964		A2(
13965			_elm_lang$core$Basics_ops['++'],
13966			A2(
13967				_rundis$elm_bootstrap$Bootstrap_Grid_Internal$vAlignsToAttributes,
13968				'align-items-',
13969				{
13970					ctor: '::',
13971					_0: options.vAlignXs,
13972					_1: {
13973						ctor: '::',
13974						_0: options.vAlignSm,
13975						_1: {
13976							ctor: '::',
13977							_0: options.vAlignMd,
13978							_1: {
13979								ctor: '::',
13980								_0: options.vAlignLg,
13981								_1: {
13982									ctor: '::',
13983									_0: options.vAlignXl,
13984									_1: {ctor: '[]'}
13985								}
13986							}
13987						}
13988					}
13989				}),
13990			A2(
13991				_elm_lang$core$Basics_ops['++'],
13992				_rundis$elm_bootstrap$Bootstrap_Grid_Internal$hAlignsToAttributes(
13993					{
13994						ctor: '::',
13995						_0: options.hAlignXs,
13996						_1: {
13997							ctor: '::',
13998							_0: options.hAlignSm,
13999							_1: {
14000								ctor: '::',
14001								_0: options.hAlignMd,
14002								_1: {
14003									ctor: '::',
14004									_0: options.hAlignLg,
14005									_1: {
14006										ctor: '::',
14007										_0: options.hAlignXl,
14008										_1: {ctor: '[]'}
14009									}
14010								}
14011							}
14012						}
14013					}),
14014				options.attributes)));
14015};
14016var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Width = F2(
14017	function (a, b) {
14018		return {screenSize: a, columnCount: b};
14019	});
14020var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset = F2(
14021	function (a, b) {
14022		return {screenSize: a, offsetCount: b};
14023	});
14024var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Pull = F2(
14025	function (a, b) {
14026		return {screenSize: a, moveCount: b};
14027	});
14028var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Push = F2(
14029	function (a, b) {
14030		return {screenSize: a, moveCount: b};
14031	});
14032var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order = F2(
14033	function (a, b) {
14034		return {screenSize: a, moveCount: b};
14035	});
14036var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$VAlign = F2(
14037	function (a, b) {
14038		return {screenSize: a, align: b};
14039	});
14040var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColOptions = function (a) {
14041	return function (b) {
14042		return function (c) {
14043			return function (d) {
14044				return function (e) {
14045					return function (f) {
14046						return function (g) {
14047							return function (h) {
14048								return function (i) {
14049									return function (j) {
14050										return function (k) {
14051											return function (l) {
14052												return function (m) {
14053													return function (n) {
14054														return function (o) {
14055															return function (p) {
14056																return function (q) {
14057																	return function (r) {
14058																		return function (s) {
14059																			return function (t) {
14060																				return function (u) {
14061																					return function (v) {
14062																						return function (w) {
14063																							return function (x) {
14064																								return function (y) {
14065																									return function (z) {
14066																										return function (_1) {
14067																											return function (_2) {
14068																												return function (_3) {
14069																													return function (_4) {
14070																														return function (_5) {
14071																															return function (_6) {
14072																																return {attributes: a, textAlign: b, widthXs: c, widthSm: d, widthMd: e, widthLg: f, widthXl: g, offsetXs: h, offsetSm: i, offsetMd: j, offsetLg: k, offsetXl: l, pullXs: m, pullSm: n, pullMd: o, pullLg: p, pullXl: q, pushXs: r, pushSm: s, pushMd: t, pushLg: u, pushXl: v, orderXs: w, orderSm: x, orderMd: y, orderLg: z, orderXl: _1, al
14072ignXs: _2, alignSm: _3, alignMd: _4, alignLg: _5, alignXl: _6};
14073																															};
14074																														};
14075																													};
14076																												};
14077																											};
14078																										};
14079																									};
14080																								};
14081																							};
14082																						};
14083																					};
14084																				};
14085																			};
14086																		};
14087																	};
14088																};
14089															};
14090														};
14091													};
14092												};
14093											};
14094										};
14095									};
14096								};
14097							};
14098						};
14099					};
14100				};
14101			};
14102		};
14103	};
14104};
14105var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$RowOptions = function (a) {
14106	return function (b) {
14107		return function (c) {
14108			return function (d) {
14109				return function (e) {
14110					return function (f) {
14111						return function (g) {
14112							return function (h) {
14113								return function (i) {
14114									return function (j) {
14115										return function (k) {
14116											return {attributes: a, vAlignXs: b, vAlignSm: c, vAlignMd: d, vAlignLg: e, vAlignXl: f, hAlignXs: g, hAlignSm: h, hAlignMd: i, hAlignLg: j, hAlignXl: k};
14117										};
14118									};
14119								};
14120							};
14121						};
14122					};
14123				};
14124			};
14125		};
14126	};
14127};
14128var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$TextAlign = function (a) {
14129	return {ctor: 'TextAlign', _0: a};
14130};
14131var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColAttrs = function (a) {
14132	return {ctor: 'ColAttrs', _0: a};
14133};
14134var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColAlign = function (a) {
14135	return {ctor: 'ColAlign', _0: a};
14136};
14137var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign = F2(
14138	function (size, align) {
14139		return _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColAlign(
14140			A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$VAlign, size, align));
14141	});
14142var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColOrder = function (a) {
14143	return {ctor: 'ColOrder', _0: a};
14144};
14145var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$order = F2(
14146	function (size, count) {
14147		return _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColOrder(
14148			A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order, size, count));
14149	});
14150var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColPush = function (a) {
14151	return {ctor: 'ColPush', _0: a};
14152};
14153var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$push = F2(
14154	function (size, count) {
14155		return _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColPush(
14156			A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$Push, size, count));
14157	});
14158var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColPull = function (a) {
14159	return {ctor: 'ColPull', _0: a};
14160};
14161var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull = F2(
14162	function (size, count) {
14163		return _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColPull(
14164			A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$Pull, size, count));
14165	});
14166var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColOffset = function (a) {
14167	return {ctor: 'ColOffset', _0: a};
14168};
14169var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset = F2(
14170	function (size, count) {
14171		return _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColOffset(
14172			A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset, size, count));
14173	});
14174var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColWidth = function (a) {
14175	return {ctor: 'ColWidth', _0: a};
14176};
14177var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$width = F2(
14178	function (size, count) {
14179		return _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColWidth(
14180			A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$Width, size, count));
14181	});
14182var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$RowAttrs = function (a) {
14183	return {ctor: 'RowAttrs', _0: a};
14184};
14185var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$RowHAlign = function (a) {
14186	return {ctor: 'RowHAlign', _0: a};
14187};
14188var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign = F2(
14189	function (size, align) {
14190		return _rundis$elm_bootstrap$Bootstrap_Grid_Internal$RowHAlign(
14191			A2(_rundis$elm_bootstrap$Bootstrap_General_Internal$HAlign, size, align));
14192	});
14193var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$RowVAlign = function (a) {
14194	return {ctor: 'RowVAlign', _0: a};
14195};
14196var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign = F2(
14197	function (size, align) {
14198		return _rundis$elm_bootstrap$Bootstrap_Grid_Internal$RowVAlign(
14199			A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$VAlign, size, align));
14200	});
14201var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColAuto = {ctor: 'ColAuto'};
14202var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col12 = {ctor: 'Col12'};
14203var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col11 = {ctor: 'Col11'};
14204var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col10 = {ctor: 'Col10'};
14205var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col9 = {ctor: 'Col9'};
14206var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col8 = {ctor: 'Col8'};
14207var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col7 = {ctor: 'Col7'};
14208var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col6 = {ctor: 'Col6'};
14209var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col5 = {ctor: 'Col5'};
14210var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col4 = {ctor: 'Col4'};
14211var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col3 = {ctor: 'Col3'};
14212var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col2 = {ctor: 'Col2'};
14213var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col1 = {ctor: 'Col1'};
14214var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col = {ctor: 'Col'};
14215var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$colAttributes = function (modifiers) {
14216	var options = A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$applyColOption, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$defaultColOptions, modifiers);
14217	var shouldAddDefaultXs = _elm_lang$core$Native_Utils.eq(
14218		_elm_lang$core$List$length(
14219			A2(
14220				_elm_lang$core$List$filterMap,
14221				_elm_lang$core$Basics$identity,
14222				{
14223					ctor: '::',
14224					_0: options.widthXs,
14225					_1: {
14226						ctor: '::',
14227						_0: options.widthSm,
14228						_1: {
14229							ctor: '::',
14230							_0: options.widthMd,
14231							_1: {
14232								ctor: '::',
14233								_0: options.widthLg,
14234								_1: {
14235									ctor: '::',
14236									_0: options.widthXl,
14237									_1: {ctor: '[]'}
14238								}
14239							}
14240						}
14241					}
14242				})),
14243		0);
14244	return A2(
14245		_elm_lang$core$Basics_ops['++'],
14246		_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colWidthsToAttributes(
14247			{
14248				ctor: '::',
14249				_0: shouldAddDefaultXs ? _elm_lang$core$Maybe$Just(
14250					A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$Width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col)) : options.widthXs,
14251				_1: {
14252					ctor: '::',
14253					_0: options.widthSm,
14254					_1: {
14255						ctor: '::',
14256						_0: options.widthMd,
14257						_1: {
14258							ctor: '::',
14259							_0: options.widthLg,
14260							_1: {
14261								ctor: '::',
14262								_0: options.widthXl,
14263								_1: {ctor: '[]'}
14264							}
14265						}
14266					}
14267				}
14268			}),
14269		A2(
14270			_elm_lang$core$Basics_ops['++'],
14271			_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offsetsToAttributes(
14272				{
14273					ctor: '::',
14274					_0: options.offsetXs,
14275					_1: {
14276						ctor: '::',
14277						_0: options.offsetSm,
14278						_1: {
14279							ctor: '::',
14280							_0: options.offsetMd,
14281							_1: {
14282								ctor: '::',
14283								_0: options.offsetLg,
14284								_1: {
14285									ctor: '::',
14286									_0: options.offsetXl,
14287									_1: {ctor: '[]'}
14288								}
14289							}
14290						}
14291					}
14292				}),
14293			A2(
14294				_elm_lang$core$Basics_ops['++'],
14295				_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pullsToAttributes(
14296					{
14297						ctor: '::',
14298						_0: options.pullXs,
14299						_1: {
14300							ctor: '::',
14301							_0: options.pullSm,
14302							_1: {
14303								ctor: '::',
14304								_0: options.pullMd,
14305								_1: {
14306									ctor: '::',
14307									_0: options.pullLg,
14308									_1: {
14309										ctor: '::',
14310										_0: options.pullXl,
14311										_1: {ctor: '[]'}
14312									}
14313								}
14314							}
14315						}
14316					}),
14317				A2(
14318					_elm_lang$core$Basics_ops['++'],
14319					_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pushesToAttributes(
14320						{
14321							ctor: '::',
14322							_0: options.pushXs,
14323							_1: {
14324								ctor: '::',
14325								_0: options.pushSm,
14326								_1: {
14327									ctor: '::',
14328									_0: options.pushMd,
14329									_1: {
14330										ctor: '::',
14331										_0: options.pushLg,
14332										_1: {
14333											ctor: '::',
14334											_0: options.pushXl,
14335											_1: {ctor: '[]'}
14336										}
14337									}
14338								}
14339							}
14340						}),
14341					A2(
14342						_elm_lang$core$Basics_ops['++'],
14343						_rundis$elm_bootstrap$Bootstrap_Grid_Internal$orderToAttributes(
14344							{
14345								ctor: '::',
14346								_0: options.orderXs,
14347								_1: {
14348									ctor: '::',
14349									_0: options.orderSm,
14350									_1: {
14351										ctor: '::',
14352										_0: options.orderMd,
14353										_1: {
14354											ctor: '::',
14355											_0: options.orderLg,
14356											_1: {
14357												ctor: '::',
14358												_0: options.orderXl,
14359												_1: {ctor: '[]'}
14360											}
14361										}
14362									}
14363								}
14364							}),
14365						A2(
14366							_elm_lang$core$Basics_ops['++'],
14367							A2(
14368								_rundis$elm_bootstrap$Bootstrap_Grid_Internal$vAlignsToAttributes,
14369								'align-self-',
14370								{
14371									ctor: '::',
14372									_0: options.alignXs,
14373									_1: {
14374										ctor: '::',
14375										_0: options.alignSm,
14376										_1: {
14377											ctor: '::',
14378											_0: options.alignMd,
14379											_1: {
14380												ctor: '::',
14381												_0: options.alignLg,
14382												_1: {
14383													ctor: '::',
14384													_0: options.alignXl,
14385													_1: {ctor: '[]'}
14386												}
14387											}
14388										}
14389									}
14390								}),
14391							function () {
14392								var _p25 = options.textAlign;
14393								if (_p25.ctor === 'Just') {
14394									return {
14395										ctor: '::',
14396										_0: _rundis$elm_bootstrap$Bootstrap_Internal_Text$textAlignClass(_p25._0),
14397										_1: {ctor: '[]'}
14398									};
14399								} else {
14400									return A2(
14401										_elm_lang$core$Basics_ops['++'],
14402										{ctor: '[]'},
14403										options.attributes);
14404								}
14405							}()))))));
14406};
14407var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset11 = {ctor: 'Offset11'};
14408var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset10 = {ctor: 'Offset10'};
14409var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset9 = {ctor: 'Offset9'};
14410var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset8 = {ctor: 'Offset8'};
14411var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset7 = {ctor: 'Offset7'};
14412var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset6 = {ctor: 'Offset6'};
14413var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset5 = {ctor: 'Offset5'};
14414var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset4 = {ctor: 'Offset4'};
14415var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset3 = {ctor: 'Offset3'};
14416var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset2 = {ctor: 'Offset2'};
14417var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset1 = {ctor: 'Offset1'};
14418var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset0 = {ctor: 'Offset0'};
14419var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move12 = {ctor: 'Move12'};
14420var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move11 = {ctor: 'Move11'};
14421var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move10 = {ctor: 'Move10'};
14422var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move9 = {ctor: 'Move9'};
14423var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move8 = {ctor: 'Move8'};
14424var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move7 = {ctor: 'Move7'};
14425var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move6 = {ctor: 'Move6'};
14426var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move5 = {ctor: 'Move5'};
14427var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move4 = {ctor: 'Move4'};
14428var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move3 = {ctor: 'Move3'};
14429var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move2 = {ctor: 'Move2'};
14430var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move1 = {ctor: 'Move1'};
14431var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move0 = {ctor: 'Move0'};
14432var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$OrderLast = {ctor: 'OrderLast'};
14433var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order12 = {ctor: 'Order12'};
14434var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order11 = {ctor: 'Order11'};
14435var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order10 = {ctor: 'Order10'};
14436var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order9 = {ctor: 'Order9'};
14437var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order8 = {ctor: 'Order8'};
14438var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order7 = {ctor: 'Order7'};
14439var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order6 = {ctor: 'Order6'};
14440var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order5 = {ctor: 'Order5'};
14441var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order4 = {ctor: 'Order4'};
14442var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order3 = {ctor: 'Order3'};
14443var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order2 = {ctor: 'Order2'};
14444var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order1 = {ctor: 'Order1'};
14445var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$OrderFirst = {ctor: 'OrderFirst'};
14446var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Bottom = {ctor: 'Bottom'};
14447var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Middle = {ctor: 'Middle'};
14448var _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Top = {ctor: 'Top'};
14449
14450var _rundis$elm_bootstrap$Bootstrap_Grid_Row$betweenXl = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_General_Internal$Between);
14451var _rundis$elm_bootstrap$Bootstrap_Grid_Row$betweenLg = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_General_Internal$Between);
14452var _rundis$elm_bootstrap$Bootstrap_Grid_Row$betweenMd = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_General_Internal$Between);
14453var _rundis$elm_bootstrap$Bootstrap_Grid_Row$betweenSm = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_General_Internal$Between);
14454var _rundis$elm_bootstrap$Bootstrap_Grid_Row$betweenXs = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_General_Internal$Between);
14455var _rundis$elm_bootstrap$Bootstrap_Grid_Row$aroundXl = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_General_Internal$Around);
14456var _rundis$elm_bootstrap$Bootstrap_Grid_Row$aroundLg = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_General_Internal$Around);
14457var _rundis$elm_bootstrap$Bootstrap_Grid_Row$aroundMd = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_General_Internal$Around);
14458var _rundis$elm_bootstrap$Bootstrap_Grid_Row$aroundSm = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_General_Internal$Around);
14459var _rundis$elm_bootstrap$Bootstrap_Grid_Row$aroundXs = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_General_Internal$Around);
14460var _rundis$elm_bootstrap$Bootstrap_Grid_Row$rightXl = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_General_Internal$Right);
14461var _rundis$elm_bootstrap$Bootstrap_Grid_Row$rightLg = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_General_Internal$Right);
14462var _rundis$elm_bootstrap$Bootstrap_Grid_Row$rightMd = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_General_Internal$Right);
14463var _rundis$elm_bootstrap$Bootstrap_Grid_Row$rightSm = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_General_Internal$Right);
14464var _rundis$elm_bootstrap$Bootstrap_Grid_Row$rightXs = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_General_Internal$Right);
14465var _rundis$elm_bootstrap$Bootstrap_Grid_Row$centerXl = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_General_Internal$Center);
14466var _rundis$elm_bootstrap$Bootstrap_Grid_Row$centerLg = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_General_Internal$Center);
14467var _rundis$elm_bootstrap$Bootstrap_Grid_Row$centerMd = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_General_Internal$Center);
14468var _rundis$elm_bootstrap$Bootstrap_Grid_Row$centerSm = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_General_Internal$Center);
14469var _rundis$elm_bootstrap$Bootstrap_Grid_Row$centerXs = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_General_Internal$Center);
14470var _rundis$elm_bootstrap$Bootstrap_Grid_Row$leftXl = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_General_Internal$Left);
14471var _rundis$elm_bootstrap$Bootstrap_Grid_Row$leftLg = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_General_Internal$Left);
14472var _rundis$elm_bootstrap$Bootstrap_Grid_Row$leftMd = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_General_Internal$Left);
14473var _rundis$elm_bootstrap$Bootstrap_Grid_Row$leftSm = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_General_Internal$Left);
14474var _rundis$elm_bootstrap$Bootstrap_Grid_Row$leftXs = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowHAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_General_Internal$Left);
14475var _rundis$elm_bootstrap$Bootstrap_Grid_Row$bottomXl = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Bottom);
14476var _rundis$elm_bootstrap$Bootstrap_Grid_Row$bottomLg = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Bottom);
14477var _rundis$elm_bootstrap$Bootstrap_Grid_Row$bottomMd = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Bottom);
14478var _rundis$elm_bootstrap$Bootstrap_Grid_Row$bottomSm = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Bottom);
14479var _rundis$elm_bootstrap$Bootstrap_Grid_Row$bottomXs = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Bottom);
14480var _rundis$elm_bootstrap$Bootstrap_Grid_Row$middleXl = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Middle);
14481var _rundis$elm_bootstrap$Bootstrap_Grid_Row$middleLg = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Middle);
14482var _rundis$elm_bootstrap$Bootstrap_Grid_Row$middleMd = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Middle);
14483var _rundis$elm_bootstrap$Bootstrap_Grid_Row$middleSm = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Middle);
14484var _rundis$elm_bootstrap$Bootstrap_Grid_Row$middleXs = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Middle);
14485var _rundis$elm_bootstrap$Bootstrap_Grid_Row$topXl = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Top);
14486var _rundis$elm_bootstrap$Bootstrap_Grid_Row$topLg = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Top);
14487var _rundis$elm_bootstrap$Bootstrap_Grid_Row$topMd = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Top);
14488var _rundis$elm_bootstrap$Bootstrap_Grid_Row$topSm = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Top);
14489var _rundis$elm_bootstrap$Bootstrap_Grid_Row$topXs = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Top);
14490var _rundis$elm_bootstrap$Bootstrap_Grid_Row$attrs = function (attrs) {
14491	return _rundis$elm_bootstrap$Bootstrap_Grid_Internal$RowAttrs(attrs);
14492};
14493
14494var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXlLast = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$OrderLast);
14495var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXl12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order12);
14496var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXl11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order11);
14497var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXl10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order10);
14498var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXl9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order9);
14499var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXl8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order8);
14500var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXl7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order7);
14501var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXl6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order6);
14502var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXl5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order5);
14503var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXl4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order4);
14504var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXl3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order3);
14505var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXl2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order2);
14506var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXl1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order1);
14507var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXlFirst = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$OrderFirst);
14508var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLgLast = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$OrderLast);
14509var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLg12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order12);
14510var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLg11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order11);
14511var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLg10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order10);
14512var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLg9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order9);
14513var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLg8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order8);
14514var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLg7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order7);
14515var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLg6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order6);
14516var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLg5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order5);
14517var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLg4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order4);
14518var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLg3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order3);
14519var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLg2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order2);
14520var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLg1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order1);
14521var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderLgFirst = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$OrderFirst);
14522var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMdLast = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$OrderLast);
14523var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMd12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order12);
14524var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMd11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order11);
14525var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMd10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order10);
14526var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMd9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order9);
14527var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMd8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order8);
14528var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMd7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order7);
14529var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMd6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order6);
14530var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMd5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order5);
14531var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMd4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order4);
14532var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMd3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order3);
14533var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMd2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order2);
14534var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMd1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order1);
14535var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderMdFirst = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$OrderFirst);
14536var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSmLast = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$OrderLast);
14537var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSm12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order12);
14538var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSm11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order11);
14539var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSm10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order10);
14540var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSm9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order9);
14541var _rundis$elm_boot
14541strap$Bootstrap_Grid_Col$orderSm8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order8);
14542var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSm7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order7);
14543var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSm6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order6);
14544var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSm5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order5);
14545var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSm4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order4);
14546var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSm3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order3);
14547var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSm2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order2);
14548var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSm1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order1);
14549var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderSmFirst = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$OrderFirst);
14550var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXsLast = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$OrderLast);
14551var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXs12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order12);
14552var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXs11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order11);
14553var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXs10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order10);
14554var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXs9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order9);
14555var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXs8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order8);
14556var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXs7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order7);
14557var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXs6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order6);
14558var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXs5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order5);
14559var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXs4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order4);
14560var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXs3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order3);
14561var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXs2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order2);
14562var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXs1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Order1);
14563var _rundis$elm_bootstrap$Bootstrap_Grid_Col$orderXsFirst = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$order, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$OrderFirst);
14564var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move12);
14565var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move11);
14566var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move10);
14567var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move9);
14568var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move8);
14569var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move7);
14570var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move6);
14571var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move5);
14572var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move4);
14573var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move3);
14574var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move2);
14575var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move1);
14576var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXl0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move0);
14577var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move12);
14578var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move11);
14579var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move10);
14580var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move9);
14581var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move8);
14582var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move7);
14583var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move6);
14584var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move5);
14585var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move4);
14586var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move3);
14587var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move2);
14588var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move1);
14589var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushLg0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move0);
14590var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move12);
14591var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move11);
14592var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move10);
14593var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move9);
14594var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move8);
14595var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move7);
14596var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move6);
14597var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move5);
14598var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move4);
14599var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move3);
14600var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move2);
14601var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move1);
14602var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushMd0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move0);
14603var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move12);
14604var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move11);
14605var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move10);
14606var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move9);
14607var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move8);
14608var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move7);
14609var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move6);
14610var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move5);
14611var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move4);
14612var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move3);
14613var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move2);
14614var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move1);
14615var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushSm0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move0);
14616var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move12);
14617var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move11);
14618var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move10);
14619var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move9);
14620var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move8);
14621var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move7);
14622var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move6);
14623var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move5);
14624var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move4);
14625var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move3);
14626var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move2);
14627var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move1);
14628var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pushXs0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$push, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move0);
14629var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move12);
14630var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move11);
14631var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move10);
14632var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move9);
14633var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move8);
14634var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move7);
14635var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move6);
14636var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move5);
14637var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move4);
14638var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move3);
14639var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move2);
14640var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move1);
14641var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXl0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move0);
14642var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move12);
14643var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move11);
14644var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move10);
14645var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move9);
14646var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move8);
14647var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move7);
14648var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move6);
14649var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move5);
14650var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move4);
14651var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move3);
14652var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move2);
14653var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move1);
14654var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullLg0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move0);
14655var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move12);
14656var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move11);
14657var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move10);
14658var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move9);
14659var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move8);
14660var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move7);
14661var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move6);
14662var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move5);
14663var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move4);
14664var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move3);
14665var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move2);
14666var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move1);
14667var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullMd0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move0);
14668var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move12);
14669var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move11);
14670var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move10);
14671var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move9);
14672var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move8);
14673var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move7);
14674var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move6);
14675var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move5);
14676var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move4);
14677var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move3);
14678var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move2);
14679var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move1);
14680var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullSm0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move0);
14681var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move12);
14682var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move11);
14683var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move10);
14684var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move9);
14685var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move8);
14686var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move7);
14687var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move6);
14688var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move5);
14689var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move4);
14690var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move3);
14691var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move2);
14692var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move1);
14693var _rundis$elm_bootstrap$Bootstrap_Grid_Col$pullXs0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$pull, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Move0);
14694var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXl11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset11);
14695var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXl10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset10);
14696var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXl9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset9);
14697var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXl8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset8);
14698var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXl7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset7);
14699var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXl6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset6);
14700var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXl5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset5);
14701var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXl4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset4);
14702var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXl3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset3);
14703var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXl2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset2);
14704var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXl1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset1);
14705var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXl0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset0);
14706var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetLg11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset11);
14707var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetLg10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset10);
14708var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetLg9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset9);
14709var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetLg8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset8);
14710var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetLg7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset7);
14711var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetLg6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset6);
14712var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetLg5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset5);
14713var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetLg4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset4);
14714var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetLg3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset3);
14715var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetLg2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset2);
14716var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetLg1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset1);
14717var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetLg0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset0);
14718var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetMd11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset11);
14719var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetMd10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset10);
14720var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetMd9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset9);
14721var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetMd8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset8);
14722var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetMd7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset7);
14723var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetMd6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset6);
14724var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetMd5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset5);
14725var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetMd4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset4);
14726var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetMd3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset3);
14727var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetMd2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset2);
14728var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetMd1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset1);
14729var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetMd0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset0);
14730var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetSm11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset11);
14731var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetSm10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset10);
14732var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetSm9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset9);
14733var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetSm8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset8);
14734var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetSm7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset7);
14735var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetSm6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset6);
14736var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetSm5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset5);
14737var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetSm4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset4);
14738var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetSm3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset3);
14739var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetSm2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset2);
14740var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetSm1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset1);
14741var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetSm0 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset0);
14742var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXs11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset11);
14743var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXs10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset10);
14744var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXs9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset9);
14745var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXs8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset8);
14746var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXs7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset7);
14747var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXs6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset6);
14748var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXs5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset5);
14749var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXs4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset4);
14750var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXs3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset3);
14751var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXs2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset2);
14752var _rundis$elm_bootstrap$Bootstrap_Grid_Col$offsetXs1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$offset, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Offset1);
14753var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xlAuto = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColAuto);
14754var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col12);
14755var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col11);
14756var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col10);
14757var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col9);
14758var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col8);
14759var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col7);
14760var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col6);
14761var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col5);
14762var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col4);
14763var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col3);
14764var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col2);
14765var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col1);
14766var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xl = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col);
14767var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lgAuto = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColAuto);
14768var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col12);
14769var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col11);
14770var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col10);
14771var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col9);
14772var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col8);
14773var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col7);
14774var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col6);
14775var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col5);
14776var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col4);
14777var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col3);
14778var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col2);
14779var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col1);
14780var _rundis$elm_bootstrap$Bootstrap_Grid_Col$lg = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col);
14781var _rundis$elm_bootstrap$Bootstrap_Grid_Col$mdAuto = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootst
14781rap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColAuto);
14782var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col12);
14783var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col11);
14784var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col10);
14785var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col9);
14786var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col8);
14787var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col7);
14788var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col6);
14789var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col5);
14790var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col4);
14791var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col3);
14792var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col2);
14793var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col1);
14794var _rundis$elm_bootstrap$Bootstrap_Grid_Col$md = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col);
14795var _rundis$elm_bootstrap$Bootstrap_Grid_Col$smAuto = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColAuto);
14796var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col12);
14797var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col11);
14798var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col10);
14799var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col9);
14800var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col8);
14801var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col7);
14802var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col6);
14803var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col5);
14804var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col4);
14805var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col3);
14806var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col2);
14807var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col1);
14808var _rundis$elm_bootstrap$Bootstrap_Grid_Col$sm = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col);
14809var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xsAuto = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColAuto);
14810var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs12 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col12);
14811var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs11 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col11);
14812var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs10 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col10);
14813var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs9 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col9);
14814var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs8 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col8);
14815var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs7 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col7);
14816var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs6 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col6);
14817var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs5 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col5);
14818var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs4 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col4);
14819var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs3 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col3);
14820var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs2 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col2);
14821var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs1 = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col1);
14822var _rundis$elm_bootstrap$Bootstrap_Grid_Col$xs = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$width, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Col);
14823var _rundis$elm_bootstrap$Bootstrap_Grid_Col$bottomXl = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Bottom);
14824var _rundis$elm_bootstrap$Bootstrap_Grid_Col$bottomLg = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Bottom);
14825var _rundis$elm_bootstrap$Bootstrap_Grid_Col$bottomMd = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Bottom);
14826var _rundis$elm_bootstrap$Bootstrap_Grid_Col$bottomSm = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Bottom);
14827var _rundis$elm_bootstrap$Bootstrap_Grid_Col$bottomXs = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Bottom);
14828var _rundis$elm_bootstrap$Bootstrap_Grid_Col$middleXl = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Middle);
14829var _rundis$elm_bootstrap$Bootstrap_Grid_Col$middleLg = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Middle);
14830var _rundis$elm_bootstrap$Bootstrap_Grid_Col$middleMd = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Middle);
14831var _rundis$elm_bootstrap$Bootstrap_Grid_Col$middleSm = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Middle);
14832var _rundis$elm_bootstrap$Bootstrap_Grid_Col$middleXs = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Middle);
14833var _rundis$elm_bootstrap$Bootstrap_Grid_Col$topXl = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XL, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Top);
14834var _rundis$elm_bootstrap$Bootstrap_Grid_Col$topLg = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$LG, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Top);
14835var _rundis$elm_bootstrap$Bootstrap_Grid_Col$topMd = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$MD, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Top);
14836var _rundis$elm_bootstrap$Bootstrap_Grid_Col$topSm = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$SM, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Top);
14837var _rundis$elm_bootstrap$Bootstrap_Grid_Col$topXs = A2(_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colVAlign, _rundis$elm_bootstrap$Bootstrap_General_Internal$XS, _rundis$elm_bootstrap$Bootstrap_Grid_Internal$Top);
14838var _rundis$elm_bootstrap$Bootstrap_Grid_Col$textAlign = function (align) {
14839	return _rundis$elm_bootstrap$Bootstrap_Grid_Internal$TextAlign(align);
14840};
14841var _rundis$elm_bootstrap$Bootstrap_Grid_Col$attrs = function (attrs) {
14842	return _rundis$elm_bootstrap$Bootstrap_Grid_Internal$ColAttrs(attrs);
14843};
14844
14845var _rundis$elm_bootstrap$Bootstrap_Form$renderCol = function (_p0) {
14846	var _p1 = _p0;
14847	return A2(
14848		_p1._0.elemFn,
14849		_rundis$elm_bootstrap$Bootstrap_Grid_Internal$colAttributes(_p1._0.options),
14850		_p1._0.children);
14851};
14852var _rundis$elm_bootstrap$Bootstrap_Form$row = F2(
14853	function (options, cols) {
14854		return A2(
14855			_elm_lang$html$Html$div,
14856			{
14857				ctor: '::',
14858				_0: _elm_lang$html$Html_Attributes$class('form-group'),
14859				_1: _rundis$elm_bootstrap$Bootstrap_Grid_Internal$rowAttributes(options)
14860			},
14861			A2(_elm_lang$core$List$map, _rundis$elm_bootstrap$Bootstrap_Form$renderCol, cols));
14862	});
14863var _rundis$elm_bootstrap$Bootstrap_Form$applyModifier = F2(
14864	function (modifier, options) {
14865		var _p2 = modifier;
14866		return _elm_lang$core$Native_Utils.update(
14867			options,
14868			{
14869				attributes: A2(_elm_lang$core$Basics_ops['++'], options.attributes, _p2._0)
14870			});
14871	});
14872var _rundis$elm_bootstrap$Bootstrap_Form$defaultOptions = {
14873	attributes: {ctor: '[]'}
14874};
14875var _rundis$elm_bootstrap$Bootstrap_Form$toAttributes = function (modifiers) {
14876	var options = A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Form$applyModifier, _rundis$elm_bootstrap$Bootstrap_Form$defaultOptions, modifiers);
14877	return A2(
14878		_elm_lang$core$Basics_ops['++'],
14879		{
14880			ctor: '::',
14881			_0: _elm_lang$html$Html_Attributes$class('form-group'),
14882			_1: {ctor: '[]'}
14883		},
14884		options.attributes);
14885};
14886var _rundis$elm_bootstrap$Bootstrap_Form$invalidFeedback = F2(
14887	function (attributes, children) {
14888		return A2(
14889			_elm_lang$html$Html$div,
14890			{
14891				ctor: '::',
14892				_0: _elm_lang$html$Html_Attributes$class('invalid-feedback'),
14893				_1: attributes
14894			},
14895			children);
14896	});
14897var _rundis$elm_bootstrap$Bootstrap_Form$validFeedback = F2(
14898	function (attributes, children) {
14899		return A2(
14900			_elm_lang$html$Html$div,
14901			{
14902				ctor: '::',
14903				_0: _elm_lang$html$Html_Attributes$class('valid-feedback'),
14904				_1: attributes
14905			},
14906			children);
14907	});
14908var _rundis$elm_bootstrap$Bootstrap_Form$helpInline = F2(
14909	function (attributes, children) {
14910		return A2(
14911			_elm_lang$html$Html$small,
14912			{
14913				ctor: '::',
14914				_0: _elm_lang$html$Html_Attributes$class('text-muted'),
14915				_1: attributes
14916			},
14917			children);
14918	});
14919var _rundis$elm_bootstrap$Bootstrap_Form$help = F2(
14920	function (attributes, children) {
14921		return A2(
14922			_elm_lang$html$Html$small,
14923			{
14924				ctor: '::',
14925				_0: _elm_lang$html$Html_Attributes$class('form-text text-muted'),
14926				_1: attributes
14927			},
14928			children);
14929	});
14930var _rundis$elm_bootstrap$Bootstrap_Form$label = F2(
14931	function (attributes, children) {
14932		return A2(
14933			_elm_lang$html$Html$label,
14934			{
14935				ctor: '::',
14936				_0: _elm_lang$html$Html_Attributes$class('form-control-label'),
14937				_1: attributes
14938			},
14939			children);
14940	});
14941var _rundis$elm_bootstrap$Bootstrap_Form$group = F2(
14942	function (options, children) {
14943		return A2(
14944			_elm_lang$html$Html$div,
14945			_rundis$elm_bootstrap$Bootstrap_Form$toAttributes(options),
14946			children);
14947	});
14948var _rundis$elm_bootstrap$Bootstrap_Form$form = F2(
14949	function (attributes, children) {
14950		return A2(_elm_lang$html$Html$form, attributes, children);
14951	});
14952var _rundis$elm_bootstrap$Bootstrap_Form$formInline = function (attributes) {
14953	return _rundis$elm_bootstrap$Bootstrap_Form$form(
14954		{
14955			ctor: '::',
14956			_0: _elm_lang$html$Html_Attributes$class('form-inline'),
14957			_1: attributes
14958		});
14959};
14960var _rundis$elm_bootstrap$Bootstrap_Form$Options = function (a) {
14961	return {attributes: a};
14962};
14963var _rundis$elm_bootstrap$Bootstrap_Form$Col = function (a) {
14964	return {ctor: 'Col', _0: a};
14965};
14966var _rundis$elm_bootstrap$Bootstrap_Form$col = F2(
14967	function (options, children) {
14968		return _rundis$elm_bootstrap$Bootstrap_Form$Col(
14969			{elemFn: _elm_lang$html$Html$div, options: options, children: children});
14970	});
14971var _rundis$elm_bootstrap$Bootstrap_Form$colLabel = F2(
14972	function (options, children) {
14973		return _rundis$elm_bootstrap$Bootstrap_Form$Col(
14974			{
14975				elemFn: _elm_lang$html$Html$label,
14976				options: {
14977					ctor: '::',
14978					_0: _rundis$elm_bootstrap$Bootstrap_Grid_Col$attrs(
14979						{
14980							ctor: '::',
14981							_0: _elm_lang$html$Html_Attributes$class('col-form-label'),
14982							_1: {ctor: '[]'}
14983						}),
14984					_1: options
14985				},
14986				children: children
14987			});
14988	});
14989var _rundis$elm_bootstrap$Bootstrap_Form$colLabelSm = function (options) {
14990	return _rundis$elm_bootstrap$Bootstrap_Form$colLabel(
14991		{
14992			ctor: '::',
14993			_0: _rundis$elm_bootstrap$Bootstrap_Grid_Col$attrs(
14994				{
14995					ctor: '::',
14996					_0: _elm_lang$html$Html_Attributes$class('col-form-label-sm'),
14997					_1: {ctor: '[]'}
14998				}),
14999			_1: options
15000		});
15001};
15002var _rundis$elm_bootstrap$Bootstrap_Form$colLabelLg = function (options) {
15003	return _rundis$elm_bootstrap$Bootstrap_Form$colLabel(
15004		{
15005			ctor: '::',
15006			_0: _rundis$elm_bootstrap$Bootstrap_Grid_Col$attrs(
15007				{
15008					ctor: '::',
15009					_0: _elm_lang$html$Html_Attributes$class('col-form-label-lg'),
15010					_1: {ctor: '[]'}
15011				}),
15012			_1: options
15013		});
15014};
15015var _rundis$elm_bootstrap$Bootstrap_Form$Attrs = function (a) {
15016	return {ctor: 'Attrs', _0: a};
15017};
15018
15019var _rundis$elm_bootstrap$Bootstrap_Form_FormInternal$validationToString = function (validation) {
15020	var _p0 = validation;
15021	if (_p0.ctor === 'Success') {
15022		return 'is-valid';
15023	} else {
15024		return 'is-invalid';
15025	}
15026};
15027var _rundis$elm_bootstrap$Bootstrap_Form_FormInternal$validationWrapperAttribute = function (validation) {
15028	return _elm_lang$html$Html_Attributes$class(
15029		A2(
15030			_elm_lang$core$Basics_ops['++'],
15031			'has-',
15032			_rundis$elm_bootstrap$Bootstrap_Form_FormInternal$validationToString(validation)));
15033};
15034var _rundis$elm_bootstrap$Bootstrap_Form_FormInternal$Danger = {ctor: 'Danger'};
15035var _rundis$elm_bootstrap$Bootstrap_Form_FormInternal$Success = {ctor: 'Success'};
15036
15037var _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$view = function (_p0) {
15038	var _p1 = _p0;
15039	var _p2 = _p1._0.options;
15040	return A2(
15041		_elm_lang$html$Html$fieldset,
15042		A2(
15043			_elm_lang$core$Basics_ops['++'],
15044			{
15045				ctor: '::',
15046				_0: _elm_lang$html$Html_Attributes$classList(
15047					{
15048						ctor: '::',
15049						_0: {ctor: '_Tuple2', _0: 'form-group', _1: _p2.isGroup},
15050						_1: {ctor: '[]'}
15051					}),
15052				_1: {
15053					ctor: '::',
15054					_0: _elm_lang$html$Html_Attributes$disabled(_p2.disabled),
15055					_1: {ctor: '[]'}
15056				}
15057			},
15058			_p2.attributes),
15059		A3(
15060			_elm_lang$core$Basics$flip,
15061			_elm_lang$core$List$append,
15062			_p1._0.children,
15063			A2(
15064				_elm_lang$core$Maybe$withDefault,
15065				{ctor: '[]'},
15066				A2(
15067					_elm_lang$core$Maybe$map,
15068					function (e) {
15069						return {
15070							ctor: '::',
15071							_0: e,
15072							_1: {ctor: '[]'}
15073						};
15074					},
15075					_p1._0.legend))));
15076};
15077var _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$ConfigRec = F3(
15078	function (a, b, c) {
15079		return {options: a, legend: b, children: c};
15080	});
15081var _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$Options = F3(
15082	function (a, b, c) {
15083		return {isGroup: a, disabled: b, attributes: c};
15084	});
15085var _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$Config = function (a) {
15086	return {ctor: 'Config', _0: a};
15087};
15088var _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$config = _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$Config(
15089	{
15090		options: {
15091			isGroup: false,
15092			disabled: false,
15093			attributes: {ctor: '[]'}
15094		},
15095		legend: _elm_lang$core$Maybe$Nothing,
15096		children: {ctor: '[]'}
15097	});
15098var _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$mapConfig = F2(
15099	function (mapper, _p3) {
15100		var _p4 = _p3;
15101		return _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$Config(
15102			mapper(_p4._0));
15103	});
15104var _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$legend = F2(
15105	function (attributes, children) {
15106		return _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$mapConfig(
15107			function (conf) {
15108				return _elm_lang$core$Native_Utils.update(
15109					conf,
15110					{
15111						legend: _elm_lang$core$Maybe$Just(
15112							A2(_elm_lang$html$Html$legend, attributes, children))
15113					});
15114			});
15115	});
15116var _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$children = function (children) {
15117	return _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$mapConfig(
15118		function (conf) {
15119			return _elm_lang$core$Native_Utils.update(
15120				conf,
15121				{children: children});
15122		});
15123};
15124var _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$mapOptions = F2(
15125	function (mapper, _p5) {
15126		var _p6 = _p5;
15127		return _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$Config(
15128			_elm_lang$core$Native_Utils.update(
15129				_p6._0,
15130				{
15131					options: mapper(_p6._0.options)
15132				}));
15133	});
15134var _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$asGroup = _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$mapOptions(
15135	function (opts) {
15136		return _elm_lang$core$Native_Utils.update(
15137			opts,
15138			{isGroup: true});
15139	});
15140var _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$disabled = function (isDisabled) {
15141	return _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$mapOptions(
15142		function (opts) {
15143			return _elm_lang$core$Native_Utils.update(
15144				opts,
15145				{disabled: isDisabled});
15146		});
15147};
15148var _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$attrs = function (attrs) {
15149	return _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$mapOptions(
15150		function (opts) {
15151			return _elm_lang$core$Native_Utils.update(
15152				opts,
15153				{
15154					attributes: A2(_elm_lang$core$Basics_ops['++'], opts.attributes, attrs)
15155				});
15156		});
15157};
15158
15159var _rundis$elm_bootstrap$Bootstrap_Form_Input$validationAttribute = function (validation) {
15160	return _elm_lang$html$Html_Attributes$class(
15161		_rundis$elm_bootstrap$Bootstrap_Form_FormInternal$validationToString(validation));
15162};
15163var _rundis$elm_bootstrap$Bootstrap_Form_Input$typeAttribute = function (inputType) {
15164	return _elm_lang$html$Html_Attributes$type_(
15165		function () {
15166			var _p0 = inputType;
15167			switch (_p0.ctor) {
15168				case 'Text':
15169					return 'text';
15170				case 'Password':
15171					return 'password';
15172				case 'DatetimeLocal':
15173					return 'datetime-local';
15174				case 'Date':
15175					return 'date';
15176				case 'Month':
15177					return 'month';
15178				case 'Time':
15179					return 'time';
15180				case 'Week':
15181					return 'week';
15182				case 'Number':
15183					return 'number';
15184				case 'Email':
15185					return 'email';
15186				case 'Url':
15187					return 'url';
15188				case 'Search':
15189					return 'search';
15190				case 'Tel':
15191					return 'tel';
15192				default:
15193					return 'color';
15194			}
15195		}());
15196};
15197var _rundis$elm_bootstrap$Bootstrap_Form_Input$sizeAttribute = function (size) {
15198	return A2(
15199		_elm_lang$core$Maybe$map,
15200		function (s) {
15201			return _elm_lang$html$Html_Attributes$class(
15202				A2(_elm_lang$core$Basics_ops['++'], 'form-control-', s));
15203		},
15204		_rundis$elm_bootstrap$Bootstrap_General_Internal$screenSizeOption(size));
15205};
15206var _rundis$elm_bootstrap$Bootstrap_Form_Input$applyModifier = F2(
15207	function (modifier, options) {
15208		var _p1 = modifier;
15209		switch (_p1.ctor) {
15210			case 'Size':
15211				return _elm_lang$core$Native_Utils.update(
15212					options,
15213					{
15214						size: _elm_lang$core$Maybe$Just(_p1._0)
15215					});
15216			case 'Id':
15217				return _elm_lang$core$Native_Utils.update(
15218					options,
15219					{
15220						id: _elm_lang$core$Maybe$Just(_p1._0)
15221					});
15222			case 'Type':
15223				return _elm_lang$core$Native_Utils.update(
15224					options,
15225					{tipe: _p1._0});
15226			case 'Disabled':
15227				return _elm_lang$core$Native_Utils.update(
15228					options,
15229					{disabled: _p1._0});
15230			case 'Value':
15231				return _elm_lang$core$Native_Utils.update(
15232					options,
15233					{
15234						value: _elm_lang$core$Maybe$Just(_p1._0)
15235					});
15236			case 'DefaultValue':
15237				return _elm_lang$core$Native_Utils.update(
15238					options,
15239					{
15240						defaultValue: _elm_lang$core$Maybe$Just(_p1._0)
15241					});
15242			case 'Placeholder':
15243				return _elm_lang$core$Native_Utils.update(
15244					options,
15245					{
15246						placeholder: _elm_lang$core$Maybe$Just(_p1._0)
15247					});
15248			case 'OnInput':
15249				return _elm_lang$core$Native_Utils.update(
15250					options,
15251					{
15252						onInput: _elm_lang$core$Maybe$Just(_p1._0)
15253					});
15254			case 'Validation':
15255				return _elm_lang$core$Native_Utils.update(
15256					options,
15257					{
15258						validation: _elm_lang$core$Maybe$Just(_p1._0)
15259					});
15260			case 'Readonly':
15261				return _elm_lang$core$Native_Utils.update(
15262					options,
15263					{readonly: _p1._0});
15264			default:
15265				return _elm_lang$core$Native_Utils.update(
15266					options,
15267					{
15268						attributes: A2(_elm_lang$core$Basics_ops['++'], options.attributes, _p1._0)
15269					});
15270		}
15271	});
15272var _rundis$elm_bootstrap$Bootstrap_Form_Input$Options = function (a) {
15273	return function (b) {
15274		return function (c) {
15275			return function (d) {
15276				return function (e) {
15277					return function (f) {
15278						return function (g) {
15279							return function (h) {
15280								return function (i) {
15281									return function (j) {
15282										return function (k) {
15283											return {tipe: a, id: b, size: c, disabled: d, value: e, defaultValue: f, placeholder: g, onInput: h, val
15283idation: i, readonly: j, attributes: k};
15284										};
15285									};
15286								};
15287							};
15288						};
15289					};
15290				};
15291			};
15292		};
15293	};
15294};
15295var _rundis$elm_bootstrap$Bootstrap_Form_Input$Input = function (a) {
15296	return {ctor: 'Input', _0: a};
15297};
15298var _rundis$elm_bootstrap$Bootstrap_Form_Input$Attrs = function (a) {
15299	return {ctor: 'Attrs', _0: a};
15300};
15301var _rundis$elm_bootstrap$Bootstrap_Form_Input$attrs = function (attrs) {
15302	return _rundis$elm_bootstrap$Bootstrap_Form_Input$Attrs(attrs);
15303};
15304var _rundis$elm_bootstrap$Bootstrap_Form_Input$Readonly = function (a) {
15305	return {ctor: 'Readonly', _0: a};
15306};
15307var _rundis$elm_bootstrap$Bootstrap_Form_Input$readonly = function (readonly) {
15308	return _rundis$elm_bootstrap$Bootstrap_Form_Input$Readonly(readonly);
15309};
15310var _rundis$elm_bootstrap$Bootstrap_Form_Input$Placeholder = function (a) {
15311	return {ctor: 'Placeholder', _0: a};
15312};
15313var _rundis$elm_bootstrap$Bootstrap_Form_Input$placeholder = function (value) {
15314	return _rundis$elm_bootstrap$Bootstrap_Form_Input$Placeholder(value);
15315};
15316var _rundis$elm_bootstrap$Bootstrap_Form_Input$Validation = function (a) {
15317	return {ctor: 'Validation', _0: a};
15318};
15319var _rundis$elm_bootstrap$Bootstrap_Form_Input$success = _rundis$elm_bootstrap$Bootstrap_Form_Input$Validation(_rundis$elm_bootstrap$Bootstrap_Form_FormInternal$Success);
15320var _rundis$elm_bootstrap$Bootstrap_Form_Input$danger = _rundis$elm_bootstrap$Bootstrap_Form_Input$Validation(_rundis$elm_bootstrap$Bootstrap_Form_FormInternal$Danger);
15321var _rundis$elm_bootstrap$Bootstrap_Form_Input$OnInput = function (a) {
15322	return {ctor: 'OnInput', _0: a};
15323};
15324var _rundis$elm_bootstrap$Bootstrap_Form_Input$onInput = function (toMsg) {
15325	return _rundis$elm_bootstrap$Bootstrap_Form_Input$OnInput(toMsg);
15326};
15327var _rundis$elm_bootstrap$Bootstrap_Form_Input$DefaultValue = function (a) {
15328	return {ctor: 'DefaultValue', _0: a};
15329};
15330var _rundis$elm_bootstrap$Bootstrap_Form_Input$defaultValue = function (value) {
15331	return _rundis$elm_bootstrap$Bootstrap_Form_Input$DefaultValue(value);
15332};
15333var _rundis$elm_bootstrap$Bootstrap_Form_Input$Value = function (a) {
15334	return {ctor: 'Value', _0: a};
15335};
15336var _rundis$elm_bootstrap$Bootstrap_Form_Input$value = function (value) {
15337	return _rundis$elm_bootstrap$Bootstrap_Form_Input$Value(value);
15338};
15339var _rundis$elm_bootstrap$Bootstrap_Form_Input$Disabled = function (a) {
15340	return {ctor: 'Disabled', _0: a};
15341};
15342var _rundis$elm_bootstrap$Bootstrap_Form_Input$disabled = function (disabled) {
15343	return _rundis$elm_bootstrap$Bootstrap_Form_Input$Disabled(disabled);
15344};
15345var _rundis$elm_bootstrap$Bootstrap_Form_Input$Type = function (a) {
15346	return {ctor: 'Type', _0: a};
15347};
15348var _rundis$elm_bootstrap$Bootstrap_Form_Input$create = F2(
15349	function (tipe, options) {
15350		return _rundis$elm_bootstrap$Bootstrap_Form_Input$Input(
15351			{
15352				options: {
15353					ctor: '::',
15354					_0: _rundis$elm_bootstrap$Bootstrap_Form_Input$Type(tipe),
15355					_1: options
15356				}
15357			});
15358	});
15359var _rundis$elm_bootstrap$Bootstrap_Form_Input$Id = function (a) {
15360	return {ctor: 'Id', _0: a};
15361};
15362var _rundis$elm_bootstrap$Bootstrap_Form_Input$id = function (id) {
15363	return _rundis$elm_bootstrap$Bootstrap_Form_Input$Id(id);
15364};
15365var _rundis$elm_bootstrap$Bootstrap_Form_Input$Size = function (a) {
15366	return {ctor: 'Size', _0: a};
15367};
15368var _rundis$elm_bootstrap$Bootstrap_Form_Input$small = _rundis$elm_bootstrap$Bootstrap_Form_Input$Size(_rundis$elm_bootstrap$Bootstrap_General_Internal$SM);
15369var _rundis$elm_bootstrap$Bootstrap_Form_Input$large = _rundis$elm_bootstrap$Bootstrap_Form_Input$Size(_rundis$elm_bootstrap$Bootstrap_General_Internal$LG);
15370var _rundis$elm_bootstrap$Bootstrap_Form_Input$Color = {ctor: 'Color'};
15371var _rundis$elm_bootstrap$Bootstrap_Form_Input$Tel = {ctor: 'Tel'};
15372var _rundis$elm_bootstrap$Bootstrap_Form_Input$Search = {ctor: 'Search'};
15373var _rundis$elm_bootstrap$Bootstrap_Form_Input$Url = {ctor: 'Url'};
15374var _rundis$elm_bootstrap$Bootstrap_Form_Input$Email = {ctor: 'Email'};
15375var _rundis$elm_bootstrap$Bootstrap_Form_Input$Number = {ctor: 'Number'};
15376var _rundis$elm_bootstrap$Bootstrap_Form_Input$Week = {ctor: 'Week'};
15377var _rundis$elm_bootstrap$Bootstrap_Form_Input$Time = {ctor: 'Time'};
15378var _rundis$elm_bootstrap$Bootstrap_Form_Input$Month = {ctor: 'Month'};
15379var _rundis$elm_bootstrap$Bootstrap_Form_Input$Date = {ctor: 'Date'};
15380var _rundis$elm_bootstrap$Bootstrap_Form_Input$DatetimeLocal = {ctor: 'DatetimeLocal'};
15381var _rundis$elm_bootstrap$Bootstrap_Form_Input$Password = {ctor: 'Password'};
15382var _rundis$elm_bootstrap$Bootstrap_Form_Input$Text = {ctor: 'Text'};
15383var _rundis$elm_bootstrap$Bootstrap_Form_Input$defaultOptions = {
15384	tipe: _rundis$elm_bootstrap$Bootstrap_Form_Input$Text,
15385	id: _elm_lang$core$Maybe$Nothing,
15386	size: _elm_lang$core$Maybe$Nothing,
15387	disabled: false,
15388	value: _elm_lang$core$Maybe$Nothing,
15389	defaultValue: _elm_lang$core$Maybe$Nothing,
15390	placeholder: _elm_lang$core$Maybe$Nothing,
15391	onInput: _elm_lang$core$Maybe$Nothing,
15392	validation: _elm_lang$core$Maybe$Nothing,
15393	readonly: false,
15394	attributes: {ctor: '[]'}
15395};
15396var _rundis$elm_bootstrap$Bootstrap_Form_Input$toAttributes = function (modifiers) {
15397	var options = A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Form_Input$applyModifier, _rundis$elm_bootstrap$Bootstrap_Form_Input$defaultOptions, modifiers);
15398	return A2(
15399		_elm_lang$core$Basics_ops['++'],
15400		{
15401			ctor: '::',
15402			_0: _elm_lang$html$Html_Attributes$class('form-control'),
15403			_1: {
15404				ctor: '::',
15405				_0: _elm_lang$html$Html_Attributes$disabled(options.disabled),
15406				_1: {
15407					ctor: '::',
15408					_0: _elm_lang$html$Html_Attributes$readonly(options.readonly),
15409					_1: {
15410						ctor: '::',
15411						_0: _rundis$elm_bootstrap$Bootstrap_Form_Input$typeAttribute(options.tipe),
15412						_1: {ctor: '[]'}
15413					}
15414				}
15415			}
15416		},
15417		A2(
15418			_elm_lang$core$Basics_ops['++'],
15419			A2(
15420				_elm_lang$core$List$filterMap,
15421				_elm_lang$core$Basics$identity,
15422				{
15423					ctor: '::',
15424					_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Attributes$id, options.id),
15425					_1: {
15426						ctor: '::',
15427						_0: A2(_elm_lang$core$Maybe$andThen, _rundis$elm_bootstrap$Bootstrap_Form_Input$sizeAttribute, options.size),
15428						_1: {
15429							ctor: '::',
15430							_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Attributes$value, options.value),
15431							_1: {
15432								ctor: '::',
15433								_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Attributes$defaultValue, options.defaultValue),
15434								_1: {
15435									ctor: '::',
15436									_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Attributes$placeholder, options.placeholder),
15437									_1: {
15438										ctor: '::',
15439										_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Events$onInput, options.onInput),
15440										_1: {
15441											ctor: '::',
15442											_0: A2(_elm_lang$core$Maybe$map, _rundis$elm_bootstrap$Bootstrap_Form_Input$validationAttribute, options.validation),
15443											_1: {ctor: '[]'}
15444										}
15445									}
15446								}
15447							}
15448						}
15449					}
15450				}),
15451			options.attributes));
15452};
15453var _rundis$elm_bootstrap$Bootstrap_Form_Input$view = function (_p2) {
15454	var _p3 = _p2;
15455	return A2(
15456		_elm_lang$html$Html$input,
15457		_rundis$elm_bootstrap$Bootstrap_Form_Input$toAttributes(_p3._0.options),
15458		{ctor: '[]'});
15459};
15460var _rundis$elm_bootstrap$Bootstrap_Form_Input$input = F2(
15461	function (tipe, options) {
15462		return _rundis$elm_bootstrap$Bootstrap_Form_Input$view(
15463			A2(_rundis$elm_bootstrap$Bootstrap_Form_Input$create, tipe, options));
15464	});
15465var _rundis$elm_bootstrap$Bootstrap_Form_Input$text = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$Text);
15466var _rundis$elm_bootstrap$Bootstrap_Form_Input$password = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$Password);
15467var _rundis$elm_bootstrap$Bootstrap_Form_Input$datetimeLocal = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$DatetimeLocal);
15468var _rundis$elm_bootstrap$Bootstrap_Form_Input$date = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$Date);
15469var _rundis$elm_bootstrap$Bootstrap_Form_Input$month = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$Month);
15470var _rundis$elm_bootstrap$Bootstrap_Form_Input$time = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$Time);
15471var _rundis$elm_bootstrap$Bootstrap_Form_Input$week = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$Week);
15472var _rundis$elm_bootstrap$Bootstrap_Form_Input$number = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$Number);
15473var _rundis$elm_bootstrap$Bootstrap_Form_Input$email = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$Email);
15474var _rundis$elm_bootstrap$Bootstrap_Form_Input$url = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$Url);
15475var _rundis$elm_bootstrap$Bootstrap_Form_Input$search = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$Search);
15476var _rundis$elm_bootstrap$Bootstrap_Form_Input$tel = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$Tel);
15477var _rundis$elm_bootstrap$Bootstrap_Form_Input$color = _rundis$elm_bootstrap$Bootstrap_Form_Input$input(_rundis$elm_bootstrap$Bootstrap_Form_Input$Color);
15478
15479var _rundis$elm_bootstrap$Bootstrap_Form_Radio$defaultOptions = {
15480	id: _elm_lang$core$Maybe$Nothing,
15481	checked: false,
15482	name: _elm_lang$core$Maybe$Nothing,
15483	custom: false,
15484	inline: false,
15485	disabled: false,
15486	onClick: _elm_lang$core$Maybe$Nothing,
15487	validation: _elm_lang$core$Maybe$Nothing,
15488	attributes: {ctor: '[]'}
15489};
15490var _rundis$elm_bootstrap$Bootstrap_Form_Radio$toAttributes = function (options) {
15491	return A2(
15492		_elm_lang$core$Basics_ops['++'],
15493		{
15494			ctor: '::',
15495			_0: _elm_lang$html$Html_Attributes$classList(
15496				{
15497					ctor: '::',
15498					_0: {ctor: '_Tuple2', _0: 'form-check-input', _1: !options.custom},
15499					_1: {
15500						ctor: '::',
15501						_0: {ctor: '_Tuple2', _0: 'custom-control-input', _1: options.custom},
15502						_1: {ctor: '[]'}
15503					}
15504				}),
15505			_1: {
15506				ctor: '::',
15507				_0: _elm_lang$html$Html_Attributes$type_('radio'),
15508				_1: {
15509					ctor: '::',
15510					_0: _elm_lang$html$Html_Attributes$disabled(options.disabled),
15511					_1: {
15512						ctor: '::',
15513						_0: _elm_lang$html$Html_Attributes$checked(options.checked),
15514						_1: {ctor: '[]'}
15515					}
15516				}
15517			}
15518		},
15519		A2(
15520			_elm_lang$core$Basics_ops['++'],
15521			A2(
15522				_elm_lang$core$List$filterMap,
15523				_elm_lang$core$Basics$identity,
15524				{
15525					ctor: '::',
15526					_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Events$onClick, options.onClick),
15527					_1: {
15528						ctor: '::',
15529						_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Attributes$name, options.name),
15530						_1: {
15531							ctor: '::',
15532							_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Attributes$id, options.id),
15533							_1: {ctor: '[]'}
15534						}
15535					}
15536				}),
15537			options.attributes));
15538};
15539var _rundis$elm_bootstrap$Bootstrap_Form_Radio$applyModifier = F2(
15540	function (modifier, options) {
15541		var _p0 = modifier;
15542		switch (_p0.ctor) {
15543			case 'Id':
15544				return _elm_lang$core$Native_Utils.update(
15545					options,
15546					{
15547						id: _elm_lang$core$Maybe$Just(_p0._0)
15548					});
15549			case 'Checked':
15550				return _elm_lang$core$Native_Utils.update(
15551					options,
15552					{checked: _p0._0});
15553			case 'Name':
15554				return _elm_lang$core$Native_Utils.update(
15555					options,
15556					{
15557						name: _elm_lang$core$Maybe$Just(_p0._0)
15558					});
15559			case 'Inline':
15560				return _elm_lang$core$Native_Utils.update(
15561					options,
15562					{inline: true});
15563			case 'OnClick':
15564				return _elm_lang$core$Native_Utils.update(
15565					options,
15566					{
15567						onClick: _elm_lang$core$Maybe$Just(_p0._0)
15568					});
15569			case 'Custom':
15570				return _elm_lang$core$Native_Utils.update(
15571					options,
15572					{custom: true});
15573			case 'Disabled':
15574				return _elm_lang$core$Native_Utils.update(
15575					options,
15576					{disabled: _p0._0});
15577			case 'Validation':
15578				return _elm_lang$core$Native_Utils.update(
15579					options,
15580					{
15581						validation: _elm_lang$core$Maybe$Just(_p0._0)
15582					});
15583			default:
15584				return _elm_lang$core$Native_Utils.update(
15585					options,
15586					{
15587						attributes: A2(_elm_lang$core$Basics_ops['++'], options.attributes, _p0._0)
15588					});
15589		}
15590	});
15591var _rundis$elm_bootstrap$Bootstrap_Form_Radio$view = function (_p1) {
15592	var _p2 = _p1;
15593	var _p4 = _p2._0;
15594	var opts = A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Form_Radio$applyModifier, _rundis$elm_bootstrap$Bootstrap_Form_Radio$defaultOptions, _p4.options);
15595	return A2(
15596		_elm_lang$html$Html$div,
15597		{
15598			ctor: '::',
15599			_0: _elm_lang$html$Html_Attributes$classList(
15600				{
15601					ctor: '::',
15602					_0: {ctor: '_Tuple2', _0: 'form-check', _1: !opts.custom},
15603					_1: {
15604						ctor: '::',
15605						_0: {ctor: '_Tuple2', _0: 'form-check-inline', _1: (!opts.custom) && opts.inline},
15606						_1: {
15607							ctor: '::',
15608							_0: {ctor: '_Tuple2', _0: 'custom-control', _1: opts.custom},
15609							_1: {
15610								ctor: '::',
15611								_0: {ctor: '_Tuple2', _0: 'custom-radio', _1: opts.custom},
15612								_1: {
15613									ctor: '::',
15614									_0: {ctor: '_Tuple2', _0: 'custom-control-inline', _1: opts.inline && opts.custom},
15615									_1: {ctor: '[]'}
15616								}
15617							}
15618						}
15619					}
15620				}),
15621			_1: {ctor: '[]'}
15622		},
15623		{
15624			ctor: '::',
15625			_0: A2(
15626				_elm_lang$html$Html$input,
15627				_rundis$elm_bootstrap$Bootstrap_Form_Radio$toAttributes(opts),
15628				{ctor: '[]'}),
15629			_1: {
15630				ctor: '::',
15631				_0: A2(
15632					_elm_lang$html$Html$label,
15633					A2(
15634						_elm_lang$core$Basics_ops['++'],
15635						{
15636							ctor: '::',
15637							_0: _elm_lang$html$Html_Attributes$classList(
15638								{
15639									ctor: '::',
15640									_0: {ctor: '_Tuple2', _0: 'form-check-label', _1: !opts.custom},
15641									_1: {
15642										ctor: '::',
15643										_0: {ctor: '_Tuple2', _0: 'custom-control-label', _1: opts.custom},
15644										_1: {ctor: '[]'}
15645									}
15646								}),
15647							_1: {ctor: '[]'}
15648						},
15649						function () {
15650							var _p3 = opts.id;
15651							if (_p3.ctor === 'Just') {
15652								return {
15653									ctor: '::',
15654									_0: _elm_lang$html$Html_Attributes$for(_p3._0),
15655									_1: {ctor: '[]'}
15656								};
15657							} else {
15658								return {ctor: '[]'};
15659							}
15660						}()),
15661					{
15662						ctor: '::',
15663						_0: _elm_lang$html$Html$text(_p4.label),
15664						_1: {ctor: '[]'}
15665					}),
15666				_1: {ctor: '[]'}
15667			}
15668		});
15669};
15670var _rundis$elm_bootstrap$Bootstrap_Form_Radio$Options = F9(
15671	function (a, b, c, d, e, f, g, h, i) {
15672		return {id: a, checked: b, name: c, custom: d, disabled: e, inline: f, onClick: g, validation: h, attributes: i};
15673	});
15674var _rundis$elm_bootstrap$Bootstrap_Form_Radio$Radio = function (a) {
15675	return {ctor: 'Radio', _0: a};
15676};
15677var _rundis$elm_bootstrap$Bootstrap_Form_Radio$create = F2(
15678	function (options, label) {
15679		return _rundis$elm_bootstrap$Bootstrap_Form_Radio$Radio(
15680			{options: options, label: label});
15681	});
15682var _rundis$elm_bootstrap$Bootstrap_Form_Radio$radio = F2(
15683	function (options, label) {
15684		return _rundis$elm_bootstrap$Bootstrap_Form_Radio$view(
15685			A2(_rundis$elm_bootstrap$Bootstrap_Form_Radio$create, options, label));
15686	});
15687var _rundis$elm_bootstrap$Bootstrap_Form_Radio$addOption = F2(
15688	function (opt, _p5) {
15689		var _p6 = _p5;
15690		return _rundis$elm_bootstrap$Bootstrap_Form_Radio$Radio(
15691			_elm_lang$core$Native_Utils.update(
15692				_p6._0,
15693				{
15694					options: {ctor: '::', _0: opt, _1: _p6._0.options}
15695				}));
15696	});
15697var _rundis$elm_bootstrap$Bootstrap_Form_Radio$Attrs = function (a) {
15698	return {ctor: 'Attrs', _0: a};
15699};
15700var _rundis$elm_bootstrap$Bootstrap_Form_Radio$attrs = function (attrs) {
15701	return _rundis$elm_bootstrap$Bootstrap_Form_Radio$Attrs(attrs);
15702};
15703var _rundis$elm_bootstrap$Bootstrap_Form_Radio$Validation = function (a) {
15704	return {ctor: 'Validation', _0: a};
15705};
15706var _rundis$elm_bootstrap$Bootstrap_Form_Radio$success = _rundis$elm_bootstrap$Bootstrap_Form_Radio$Validation(_rundis$elm_bootstrap$Bootstrap_Form_FormInternal$Success);
15707var _rundis$elm_bootstrap$Bootstrap_Form_Radio$danger = _rundis$elm_bootstrap$Bootstrap_Form_Radio$Validation(_rundis$elm_bootstrap$Bootstrap_Form_FormInternal$Danger);
15708var _rundis$elm_bootstrap$Bootstrap_Form_Radio$Disabled = function (a) {
15709	return {ctor: 'Disabled', _0: a};
15710};
15711var _rundis$elm_bootstrap$Bootstrap_Form_Radio$disabled = function (disabled) {
15712	return _rundis$elm_bootstrap$Bootstrap_Form_Radio$Disabled(disabled);
15713};
15714var _rundis$elm_bootstrap$Bootstrap_Form_Radio$Custom = {ctor: 'Custom'};
15715var _rundis$elm_bootstrap$Bootstrap_Form_Radio$createCustom = function (options) {
15716	return _rundis$elm_bootstrap$Bootstrap_Form_Radio$create(
15717		{ctor: '::', _0: _rundis$elm_bootstrap$Bootstrap_Form_Radio$Custom, _1: options});
15718};
15719var _rundis$elm_bootstrap$Bootstrap_Form_Radio$custom = F2(
15720	function (options, label) {
15721		return _rundis$elm_bootstrap$Bootstrap_Form_Radio$view(
15722			A2(_rundis$elm_bootstrap$Bootstrap_Form_Radio$createCustom, options, label));
15723	});
15724var _rundis$elm_bootstrap$Bootstrap_Form_Radio$OnClick = function (a) {
15725	return {ctor: 'OnClick', _0: a};
15726};
15727var _rundis$elm_bootstrap$Bootstrap_Form_Radio$onClick = function (toMsg) {
15728	return _rundis$elm_bootstrap$Bootstrap_Form_Radio$OnClick(toMsg);
15729};
15730var _rundis$elm_bootstrap$Bootstrap_Form_Radio$Name = function (a) {
15731	return {ctor: 'Name', _0: a};
15732};
15733var _rundis$elm_bootstrap$Bootstrap_Form_Radio$name = function (name) {
15734	return _rundis$elm_bootstrap$Bootstrap_Form_Radio$Name(name);
15735};
15736var _rundis$elm_bootstrap$Bootstrap_Form_Radio$radioList = F2(
15737	function (groupName, radios) {
15738		return A2(
15739			_elm_lang$core$List$map,
15740			function (_p7) {
15741				return _rundis$elm_bootstrap$Bootstrap_Form_Radio$view(
15742					_rundis$elm_bootstrap$Bootstrap_Form_Radio$addOption(
15743						_rundis$elm_bootstrap$Bootstrap_Form_Radio$name(groupName))(_p7));
15744			},
15745			radios);
15746	});
15747var _rundis$elm_bootstrap$Bootstrap_Form_Radio$Inline = {ctor: 'Inline'};
15748var _rundis$elm_bootstrap$Bootstrap_Form_Radio$inline = _rundis$elm_bootstrap$Bootstrap_Form_Radio$Inline;
15749var _rundis$elm_bootstrap$Bootstrap_Form_Radio$Checked = function (a) {
15750	return {ctor: 'Checked', _0: a};
15751};
15752var _rundis$elm_bootstrap$Bootstrap_Form_Radio$checked = function (isCheck) {
15753	return _rundis$elm_bootstrap$Bootstrap_Form_Radio$Checked(isCheck);
15754};
15755var _rundis$elm_bootstrap$Bootstrap_Form_Radio$Id = function (a) {
15756	return {ctor: 'Id', _0: a};
15757};
15758var _rundis$elm_bootstrap$Bootstrap_Form_Radio$id = function (theId) {
15759	return _rundis$elm_bootstrap$Bootstrap_Form_Radio$Id(theId);
15760};
15761
15762var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$validationAttribute = function (validation) {
15763	return _elm_lang$html$Html_Attributes$class(
15764		_rundis$elm_bootstrap$Bootstrap_Form_FormInternal$validationToString(validation));
15765};
15766var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$applyModifier = F2(
15767	function (modifier, options) {
15768		var _p0 = modifier;
15769		switch (_p0.ctor) {
15770			case 'Id':
15771				return _elm_lang$core$Native_Utils.update(
15772					options,
15773					{
15774						id: _elm_lang$core$Maybe$Just(_p0._0)
15775					});
15776			case 'Rows':
15777				return _elm_lang$core$Native_Utils.update(
15778					options,
15779					{
15780						rows: _elm_lang$core$Maybe$Just(_p0._0)
15781					});
15782			case 'Disabled':
15783				return _elm_lang$core$Native_Utils.update(
15784					options,
15785					{disabled: true});
15786			case 'Value':
15787				return _elm_lang$core$Native_Utils.update(
15788					options,
15789					{
15790						value: _elm_lang$core$Maybe$Just(_p0._0)
15791					});
15792			case 'DefaultValue':
15793				return _elm_lang$core$Native_Utils.update(
15794					options,
15795					{
15796						defaultValue: _elm_lang$core$Maybe$Just(_p0._0)
15797					});
15798			case 'OnInput':
15799				return _elm_lang$core$Native_Utils.update(
15800					options,
15801					{
15802						onInput: _elm_lang$core$Maybe$Just(_p0._0)
15803					});
15804			case 'Validation':
15805				return _elm_lang$core$Native_Utils.update(
15806					options,
15807					{
15808						validation: _elm_lang$core$Maybe$Just(_p0._0)
15809					});
15810			default:
15811				return _elm_lang$core$Native_Utils.update(
15812					options,
15813					{
15814						attributes: A2(_elm_lang$core$Basics_ops['++'], options.attributes, _p0._0)
15815					});
15816		}
15817	});
15818var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$defaultOptions = {
15819	id: _elm_lang$core$Maybe$Nothing,
15820	rows: _elm_lang$core$Maybe$Nothing,
15821	disabled: false,
15822	value: _elm_lang$core$Maybe$Nothing,
15823	defaultValue: _elm_lang$core$Maybe$Nothing,
15824	onInput: _elm_lang$core$Maybe$Nothing,
15825	validation: _elm_lang$core$Maybe$Nothing,
15826	attributes: {ctor: '[]'}
15827};
15828var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$toAttributes = function (modifiers) {
15829	var options = A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Form_Textarea$applyModifier, _rundis$elm_bootstrap$Bootstrap_Form_Textarea$defaultOptions, modifiers);
15830	return A2(
15831		_elm_lang$core$Basics_ops['++'],
15832		{
15833			ctor: '::',
15834			_0: _elm_lang$html$Html_Attributes$class('form-control'),
15835			_1: {
15836				ctor: '::',
15837				_0: _elm_lang$html$Html_Attributes$disabled(options.disabled),
15838				_1: {ctor: '[]'}
15839			}
15840		},
15841		A2(
15842			_elm_lang$core$Basics_ops['++'],
15843			A2(
15844				_elm_lang$core$List$filterMap,
15845				_elm_lang$core$Basics$identity,
15846				{
15847					ctor: '::',
15848					_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Attributes$id, options.id),
15849					_1: {
15850						ctor: '::',
15851						_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Attributes$rows, options.rows),
15852						_1: {
15853							ctor: '::',
15854							_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Attributes$value, options.value),
15855							_1: {
15856								ctor: '::',
15857								_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Attributes$defaultValue, options.defaultValue),
15858								_1: {
15859									ctor: '::',
15860									_0: A2(_elm_lang$core$Maybe$map, _elm_lang$html$Html_Events$onInput, options.onInput),
15861									_1: {
15862										ctor: '::',
15863										_0: A2(_elm_lang$core$Maybe$map, _rundis$elm_bootstrap$Bootstrap_Form_Textarea$validationAttribute, options.validation),
15864										_1: {ctor: '[]'}
15865									}
15866								}
15867							}
15868						}
15869					}
15870				}),
15871			options.attributes));
15872};
15873var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$view = function (_p1) {
15874	var _p2 = _p1;
15875	return A2(
15876		_elm_lang$html$Html$textarea,
15877		_rundis$elm_bootstrap$Bootstrap_Form_Textarea$toAttributes(_p2._0.options),
15878		{ctor: '[]'});
15879};
15880var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Options = F8(
15881	function (a, b, c, d, e, f, g, h) {
15882		return {id: a, rows: b, disabled: c, value: d, defaultValue: e, onInput: f, validation: g, attributes: h};
15883	});
15884var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Textarea = function (a) {
15885	return {ctor: 'Textarea', _0: a};
15886};
15887var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$create = function (options) {
15888	return _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Textarea(
15889		{options: options});
15890};
15891var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$textarea = function (_p3) {
15892	return _rundis$elm_bootstrap$Bootstrap_Form_Textarea$view(
15893		_rundis$elm_bootstrap$Bootstrap_Form_Textarea$create(_p3));
15894};
15895var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Attrs = function (a) {
15896	return {ctor: 'Attrs', _0: a};
15897};
15898var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$attrs = function (attrs) {
15899	return _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Attrs(attrs);
15900};
15901var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Validation = function (a) {
15902	return {ctor: 'Validation', _0: a};
15903};
15904var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$success = _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Validation(_rundis$elm_bootstrap$Bootstrap_Form_FormInternal$Success);
15905var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$danger = _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Validation(_rundis$elm_bootstrap$Bootstrap_Form_FormInternal$Danger);
15906var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$OnInput = function (a) {
15907	return {ctor: 'OnInput', _0: a};
15908};
15909var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$onInput = function (toMsg) {
15910	return _rundis$elm_bootstrap$Bootstrap_Form_Textarea$OnInput(toMsg);
15911};
15912var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$DefaultValue = function (a) {
15913	return {ctor: 'DefaultValue', _0: a};
15914};
15915var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$defaultValue = function (value) {
15916	return _rundis$elm_bootstrap$Bootstrap_Form_Textarea$DefaultValue(value);
15917};
15918var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Value = function (a) {
15919	return {ctor: 'Value', _0: a};
15920};
15921var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$value = function (value) {
15922	return _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Value(value);
15923};
15924var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Disabled = {ctor: 'Disabled'};
15925var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$disabled = _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Disabled;
15926var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Rows = function (a) {
15927	return {ctor: 'Rows', _0: a};
15928};
15929var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$rows = function (rows) {
15930	return _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Rows(rows);
15931};
15932var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Id = function (a) {
15933	return {ctor: 'Id', _0: a};
15934};
15935var _rundis$elm_bootstrap$Bootstrap_Form_Textarea$id = function (id) {
15936	return _rundis$elm_bootstrap$Bootstrap_Form_Textarea$Id(id);
15937};
15938
15939var _rundis$elm_bootstrap$Bootstrap_Navbar$toRGBString = function (color) {
15940	var _p0 = _elm_lang$core$Color$toRgb(color);
15941	var red = _p0.red;
15942	var green = _p0.green;
15943	var blue = _p0.blue;
15944	return A2(
15945		_elm_lang$core$Basics_ops['++'],
15946		'RGB(',
15947		A2(
15948			_elm_lang$core$Basics_ops['++'],
15949			_elm_lang$core$Basics$toString(red),
15950			A2(
15951				_elm_lang$core$Basics_ops['++'],
15952				',',
15953				A2(
15954					_elm_lang$core$Basics_ops['++'],
15955					_elm_lang$core$Basics$toString(green),
15956					A2(
15957						_elm_lang$core$Basics_ops['++'],
15958						',',
15959						A2(
15960							_elm_lang$core$Basics_ops['++'],
15961							_elm_lang$core$Basics$toString(blue),
15962							')'))))));
15963};
15964var _rundis$elm_bootstrap$Bootstrap_Navbar$backgroundColorOption = function (bgClass) {
15965	var _p1 = bgClass;
15966	switch (_p1.ctor) {
15967		case 'Roled':
15968			return A2(_rundis$elm_bootstrap$Bootstrap_Internal_Role$toClass, 'bg', _p1._0);
15969		case 'Custom':
15970			return _elm_lang$html$Html_Attributes$style(
15971				{
15972					ctor: '::',
15973					_0: {
15974						ctor: '_Tuple2',
15975						_0: 'background-color',
15976						_1: _rundis$elm_bootstrap$Bootstrap_Navbar$toRGBString(_p1._0)
15977					},
15978					_1: {ctor: '[]'}
15979				});
15980		default:
15981			return _elm_lang$html$Html_Attributes$class(_p1._0);
15982	}
15983};
15984var _rundis$elm_bootstrap$Bootstrap_Navbar$linkModifierClass = function (modifier) {
15985	return _elm_lang$html$Html_Attributes$class(
15986		function () {
15987			var _p2 = modifier;
15988			if (_p2.ctor === 'Dark') {
15989				return 'navbar-dark';
15990			} else {
15991				return 'navbar-light';
15992			}
15993		}());
15994};
15995var _rundis$elm_bootstrap$Bootstrap_Navbar$schemeAttributes = function (_p3) {
15996	var _p4 = _p3;
15997	return {
15998		ctor: '::',
15999		_0: _rundis$elm_bootstrap$Bootstrap_Navbar$linkModifierClass(_p4.modifier),
16000		_1: {
16001			ctor: '::',
16002			_0: _rundis$elm_bootstrap$Bootstrap_Navbar$backgroundColorOption(_p4.bgColor),
16003			_1: {ctor: '[]'}
16004		}
16005	};
16006};
16007var _rundis$elm_bootstrap$Bootstrap_Navbar$fixOption = function (fix) {
16008	var _p5 = fix;
16009	if (_p5.ctor === 'Top') {
16010		return 'fixed-top';
16011	} else {
16012		return 'fixed-bottom';
16013	}
16014};
16015var _rundis$elm_bootstrap$Bootstrap_Navbar$expandOption = function (size) {
16016	var toClass = function (sz) {
16017		return _elm_lang$html$Html_Attributes$class(
16018			A2(
16019				_elm_lang$core$Basics_ops['++'],
16020				'navbar-expand',
16021				A2(
16022					_elm_lang$core$Maybe$withDefault,
16023					'',
16024					A2(
16025						_elm_lang$core$Maybe$map,
16026						function (s) {
16027							return A2(_elm_lang$core$Basics_ops['++'], '-', s);
16028						},
16029						_rundis$elm_bootstrap$Bootstrap_General_Internal$screenSizeOption(sz)))));
16030	};
16031	var _p6 = size;
16032	switch (_p6.ctor) {
16033		case 'XS':
16034			return {
16035				ctor: '::',
16036				_0: toClass(_rundis$elm_bootstrap$Bootstrap_General_Internal$SM),
16037				_1: {ctor: '[]'}
16038			};
16039		case 'SM':
16040			return {
16041				ctor: '::',
16042				_0: toClass(_rundis$elm_bootstrap$Bootstrap_General_Internal$MD),
16043				_1: {ctor: '[]'}
16044			};
16045		case 'MD':
16046			return {
16047				ctor: '::',
16048				_0: toClass(_rundis$elm_bootstrap$Bootstrap_General_Internal$LG),
16049				_1: {ctor: '[]'}
16050			};
16051		case 'LG':
16052			return {
16053				ctor: '::',
16054				_0: toClass(_rundis$elm_bootstrap$Bootstrap_General_Internal$XL),
16055				_1: {ctor: '[]'}
16056			};
16057		default:
16058			return {ctor: '[]'};
16059	}
16060};
16061var _rundis$elm_bootstrap$Bootstrap_Navbar$navbarAttributes = function (options) {
16062	return A2(
16063		_elm_lang$core$Basics_ops['++'],
16064		{
16065			ctor: '::',
16066			_0: _elm_lang$html$Html_Attributes$classList(
16067				{
16068					ctor: '::',
16069					_0: {ctor: '_Tuple2', _0: 'navbar', _1: true},
16070					_1: {
16071						ctor: '::',
16072						_0: {ctor: '_Tuple2', _0: 'container', _1: options.isContainer},
16073						_1: {ctor: '[]'}
16074					}
16075				}),
16076			_1: {ctor: '[]'}
16077		},
16078		A2(
16079			_elm_lang$core$Basics_ops['++'],
16080			_rundis$elm_bootstrap$Bootstrap_Navbar$expandOption(options.toggleAt),
16081			A2(
16082				_elm_lang$core$Basics_ops['++'],
16083				function () {
16084					var _p7 = options.scheme;
16085					if (_p7.ctor === 'Just') {
16086						return _rundis$elm_bootstrap$Bootstrap_Navbar$schemeAttributes(_p7._0);
16087					} else {
16088						return {ctor: '[]'};
16089					}
16090				}(),
16091				A2(
16092					_elm_lang$core$Basics_ops['++'],
16093					function () {
16094						var _p8 = options.fix;
16095						if (_p8.ctor === 'Just') {
16096							return {
16097								ctor: '::',
16098								_0: _elm_lang$html$Html_Attributes$class(
16099									_rundis$elm_bootstrap$Bootstrap_Navbar$fixOption(_p8._0)),
16100								_1: {ctor: '[]'}
16101							};
16102						} else {
16103							return {ctor: '[]'};
16104						}
16105					}(),
16106					options.attributes))));
16107};
16108var _rundis$elm_bootstrap$Bootstrap_Navbar$renderCustom = function (items) {
16109	return A2(
16110		_elm_lang$core$List$map,
16111		function (_p9) {
16112			var _p10 = _p9;
16113			return _p10._0;
16114		},
16115		items);
16116};
16117var _rundis$elm_bootstrap$Bootstrap_Navbar$renderItemLink = function (_p11) {
16118	var _p12 = _p11;
16119	return A2(
16120		_elm_lang$html$Html$li,
16121		{
16122			ctor: '::',
16123			_0: _elm_lang$html$Html_Attributes$class('nav-item'),
16124			_1: {ctor: '[]'}
16125		},
16126		{
16127			ctor: '::',
16128			_0: A2(
16129				_elm_lang$html$Html$a,
16130				A2(
16131					_elm_lang$core$Basics_ops['++'],
16132					{
16133						ctor: '::',
16134						_0: _elm_lang$html$Html_Attributes$class('nav-link'),
16135						_1: {ctor: '[]'}
16136					},
16137					_p12.attributes),
16138				_p12.children),
16139			_1: {ctor: '[]'}
16140		});
16141};
16142var _rundis$elm_bootstrap$Bootstrap_Navbar$maybeBrand = function (brand) {
16143	var _p13 = brand;
16144	if (_p13.ctor === 'Just') {
16145		return {
16146			ctor: '::',
16147			_0: _p13._0._0,
16148			_1: {ctor: '[]'}
16149		};
16150	} else {
16151		return {ctor: '[]'};
16152	}
16153};
16154var _rundis$elm_bootstrap$Bootstrap_Navbar$transitionStyle = function (maybeHeight) {
16155	var pixelHeight = A2(
16156		_elm_lang$core$Maybe$withDefault,
16157		'0',
16158		A2(
16159			_elm_lang$core$Maybe$map,
16160			function (v) {
16161				return A2(
16162					_elm_lang$core$Basics_ops['++'],
16163					_elm_lang$core$Basics$toString(v),
16164					'px');
16165			},
16166			maybeHeight));
16167	return _elm_lang$html$Html_Attributes$style(
16168		{
16169			ctor: '::',
16170			_0: {ctor: '_Tuple2', _0: 'position', _1: 'relative'},
16171			_1: {
16172				ctor: '::',
16173				_0: {ctor: '_Tuple2', _0: 'height', _1: pixelHeight},
16174				_1: {
16175					ctor: '::',
16176					_0: {ctor: '_Tuple2', _0: 'width', _1: '100%'},
16177					_1: {
16178						ctor: '::',
16179						_0: {ctor: '_Tuple2', _0: 'overflow', _1: 'hidden'},
16180						_1: {
16181							ctor: '::',
16182							_0: {ctor: '_Tuple2', _0: '-webkit-transition-timing-function', _1: 'ease'},
16183							_1: {
16184								ctor: '::',
16185								_0: {ctor: '_Tuple2', _0: '-o-transition-timing-function', _1: 'ease'},
16186								_1: {
16187									ctor: '::',
16188									_0: {ctor: '_Tuple2', _0: 'transition-timing-function', _1: 'ease'},
16189									_1: {
16190										ctor: '::',
16191										_0: {ctor: '_Tuple2', _0: '-webkit-transition-duration', _1: '0.35s'},
16192										_1: {
16193											ctor: '::',
16194											_0: {ctor: '_Tuple2', _0: '-o-transition-duration', _1: '0.35s'},
16195											_1: {
16196												ctor: '::',
16197												_0: {ctor: '_Tuple2', _0: 'transition-duration', _1: '0.35s'},
16198												_1: {
16199													ctor: '::',
16200													_0: {ctor: '_Tuple2', _0: '-webkit-transition-property', _1: 'height'},
16201													_1: {
16202														ctor: '::',
16203														_0: {ctor: '_Tuple2', _0: '-o-transition-property', _1: 'height'},
16204														_1: {
16205															ctor: '::',
16206															_0: {ctor: '_Tuple2', _0: 'transition-property', _1: 'height'},
16207															_1: {ctor: '[]'}
16208														}
16209													}
16210												}
16211											}
16212										}
16213									}
16214								}
16215							}
16216						}
16217					}
16218				}
16219			}
16220		});
16221};
16222var _rundis$elm_bootstrap$Bootstrap_Navbar$toScreenSize = function (_p14) {
16223	var _p15 = _p14;
16224	var _p16 = _p15.width;
16225	return (_elm_lang$core$Native_Utils.cmp(_p16, 576) < 1) ? _rundis$elm_bootstrap$Bootstrap_General_Internal$XS : ((_elm_lang$core$Native_Utils.cmp(_p16, 768) < 1) ? _rundis$elm_bootstrap$Bootstrap_General_Internal$SM : ((_elm_lang$core$Native_Utils.cmp(_p16, 992) < 1) ? _rundis$elm_bootstrap$Bootstrap_General_Internal$MD : ((_elm_lang$core$Native_Utils.cmp(_p16, 1200) < 1) ? _rundis$elm_bootstrap$Bootstrap_General_Internal$LG : _rundis$elm_bootstrap$Bootstrap_General_Internal$XL)));
16226};
16227var _rundis$elm_bootstrap$Bootstrap_Navbar$sizeToComparable = function (size) {
16228	var _p17 = size;
16229	switch (_p17.ctor) {
16230		case 'XS':
16231			return 1;
16232		case 'SM':
16233			return 2;
16234		case 'MD':
16235			return 3;
16236		case 'LG':
16237			return 4;
16238		default:
16239			return 5;
16240	}
16241};
16242var _rundis$elm_bootstrap$Bootstrap_Navbar$shouldHideMenu = F2(
16243	function (_p19, _p18) {
16244		var _p20 = _p19;
16245		var _p21 = _p18;
16246		var winMedia = function () {
16247			var _p22 = _p20._0.windowSize;
16248			if (_p22.ctor === 'Just') {
16249				return _rundis$elm_bootstrap$Bootstrap_Navbar$toScreenSize(_p22._0);
16250			} else {
16251				return _rundis$elm_bootstrap$Bootstrap_General_Internal$XS;
16252			}
16253		}();
16254		return _elm_lang$core$Native_Utils.cmp(
16255			_rundis$elm_bootstrap$Bootstrap_Navbar$sizeToComparable(winMedia),
16256			_rundis$elm_bootstrap$Bootstrap_Navbar$sizeToComparable(_p21._0.options.toggleAt)) > 0;
16257	});
16258var _rundis$elm_bootstrap$Bootstrap_Navbar$menuWrapperAttributes = F2(
16259	function (_p24, _p23) {
16260		var _p25 = _p24;
16261		var _p31 = _p25;
16262		var _p26 = _p23;
16263		var _p30 = _p26._0.withAnimation;
16264		var _p29 = _p26;
16265		var display = function () {
16266			var _p27 = _p25._0.height;
16267			if (_p27.ctor === 'Nothing') {
16268				return ((!_p30) || A2(_rundis$elm_bootstrap$Bootstrap_Navbar$shouldHideMenu, _p31, _p29)) ? 'flex' : 'block';
16269			} else {
16270				return 'flex';
16271			}
16272		}();
16273		var styleBlock = {
16274			ctor: '::',
16275			_0: _elm_lang$html$Html_Attributes$style(
16276				{
16277					ctor: '::',
16278					_0: {ctor: '_Tuple2', _0: 'display', _1: 'block'},
16279					_1: {
16280						ctor: '::',
16281						_0: {ctor: '_Tuple2', _0: 'width', _1: '100%'},
16282						_1: {ctor: '[]'}
16283					}
16284				}),
16285			_1: {ctor: '[]'}
16286		};
16287		var _p28 = _p25._0.visibility;
16288		switch (_p28.ctor) {
16289			case 'Hidden':
16290				return {
16291					ctor: '::',
16292					_0: _elm_lang$html$Html_Attributes$style(
16293						{
16294							ctor: '::',
16295							_0: {ctor: '_Tuple2', _0: 'display', _1: display},
16296							_1: {
16297								ctor: '::',
16298								_0: {ctor: '_Tuple2', _0: 'width', _1: '100%'},
16299								_1: {ctor: '[]'}
16300							}
16301						}),
16302					_1: {ctor: '[]'}
16303				};
16304			case 'StartDown':
16305				return styleBlock;
16306			case 'AnimatingDown':
16307				return styleBlock;
16308			case 'AnimatingUp':
16309				return styleBlock;
16310			case 'StartUp':
16311				return styleBlock;
16312			default:
16313				return ((!_p30) || A2(_rundis$elm_bootstrap$Bootstrap_Navbar$shouldHideMenu, _p31, _p29)) ? {
16314					ctor: '::',
16315					_0: _elm_lang$html$Html_Attributes$class('collapse navbar-collapse show'),
16316					_1: {ctor: '[]'}
16317				} : {
16318					ctor: '::',
16319					_0: _elm_lang$html$Html_Attributes$style(
16320						{
16321							ctor: '::',
16322							_0: {ctor: '_Tuple2', _0: 'display', _1: 'block'},
16323							_1: {ctor: '[]'}
16324						}),
16325					_1: {ctor: '[]'}
16326				};
16327		}
16328	});
16329var _rundis$elm_bootstrap$Bootstrap_Navbar$heightDecoder = function () {
16330	var resToDec = function (res) {
16331		var _p32 = res;
16332		if (_p32.ctor === 'Ok') {
16333			return _elm_lang$core$Json_Decode$succeed(_p32._0);
16334		} else {
16335			return _elm_lang$core$Json_Decode$fail(_p32._0);
16336		}
16337	};
16338	var fromNavDec = _elm_lang$core$Json_Decode$oneOf(
16339		{
16340			ctor: '::',
16341			_0: A2(
16342				_elm_lang$core$Json_Decode$at,
16343				{
16344					ctor: '::',
16345					_0: 'childNodes',
16346					_1: {
16347						ctor: '::',
16348						_0: '2',
16349						_1: {
16350							ctor: '::',
16351							_0: 'childNodes',
16352							_1: {
16353								ctor: '::',
16354								_0: '0',
16355								_1: {
16356									ctor: '::',
16357									_0: 'offsetHeight',
16358									_1: {ctor: '[]'}
16359								}
16360							}
16361						}
16362					}
16363				},
16364				_elm_lang$core$Json_Decode$float),
16365			_1: {
16366				ctor: '::',
16367				_0: A2(
16368					_elm_lang$core$Json_Decode$at,
16369					{
16370						ctor: '::',
16371						_0: 'childNodes',
16372						_1: {
16373							ctor: '::',
16374							_0: '1',
16375							_1: {
16376								ctor: '::',
16377								_0: 'childNodes',
16378								_1: {
16379									ctor: '::',
16380									_0: '0',
16381									_1: {
16382										ctor: '::',
16383										_0: 'offsetHeight',
16384										_1: {ctor: '[]'}
16385									}
16386								}
16387							}
16388						}
16389					},
16390					_elm_lang$core$Json_Decode$float),
16391				_1: {ctor: '[]'}
16392			}
16393		});
16394	var fromButtonDec = _debois$elm_dom$DOM$parentElement(fromNavDec);
16395	var tagDecoder = A3(
16396		_elm_lang$core$Json_Decode$map2,
16397		F2(
16398			function (tag, val) {
16399				return {ctor: '_Tuple2', _0: tag, _1: val};
16400			}),
16401		A2(_elm_lang$core$Json_Decode$field, 'tagName', _elm_lang$core$Json_Decode$string),
16402		_elm_lang$core$Json_Decode$value);
16403	return A2(
16404		_elm_lang$core$Json_Decode$andThen,
16405		function (_p33) {
16406			var _p34 = _p33;
16407			var _p36 = _p34._1;
16408			var _p35 = _p34._0;
16409			switch (_p35) {
16410				case 'NAV':
16411					return resToDec(
16412						A2(_elm_lang$core$Json_Decode$decodeValue, fromNavDec, _p36));
16413				case 'BUTTON':
16414					return resToDec(
16415						A2(_elm_lang$core$Json_Decode$decodeValue, fromButtonDec, _p36));
16416				default:
16417					return _elm_lang$core$Json_Decode$succeed(0);
16418			}
16419		},
16420		_debois$elm_dom$DOM$target(
16421			_debois$elm_dom$DOM$parentElement(tagDecoder)));
16422}();
16423var _rundis$elm_bootstrap$Bootstrap_Navbar$VisibilityState = F4(
16424	function (a, b, c, d) {
16425		return {visibility: a, height: b, windowSize: c, dropdowns: d};
16426	});
16427var _rundis$elm_bootstrap$Bootstrap_Navbar$ConfigRec = F6(
16428	function (a, b, c, d, e, f) {
16429		return {options: a, toMsg: b, withAnimation: c, brand: d, items: e, customItems: f};
16430	});
16431var _rundis$elm_bootstrap$Bootstrap_Navbar$Options = F5(
16432	function (a, b, c, d, e) {
16433		return {fix: a, isContainer: b, scheme: c, toggleAt: d, attributes: e};
16434	});
16435var _rundis$elm_bootstrap$Bootstrap_Navbar$Scheme = F2(
16436	function (a, b) {
16437		return {modifier: a, bgColor: b};
16438	});
16439var _rundis$elm_bootstrap$Bootstrap_Navbar$State = function (a) {
16440	return {ctor: 'State', _0: a};
16441};
16442var _rundis$elm_bootstrap$Bootstrap_Navbar$mapState = F2(
16443	function (mapper, _p37) {
16444		var _p38 = _p37;
16445		return _rundis$elm_bootstrap$Bootstrap_Navbar$State(
16446			mapper(_p38._0));
16447	});
16448var _rundis$elm_bootstrap$Bootstrap_Navbar$initWindowSize = F2(
16449	function (toMsg, state) {
16450		return A2(
16451			_elm_lang$core$Task$perform,
16452			function (size) {
16453				return toMsg(
16454					A2(
16455						_rundis$elm_bootstrap$Bootstrap_Navbar$mapState,
16456						function (s) {
16457							return _elm_lang$core$Native_Utils.update(
16458								s,
16459								{
16460									windowSize: _elm_lang$core$Maybe$Just(size)
16461								});
16462						},
16463						state));
16464			},
16465			_elm_lang$window$Window$size);
16466	});
16467var _rundis$elm_bootstrap$Bootstrap_Navbar$Shown = {ctor: 'Shown'};
16468var _rundis$elm_bootstrap$Bootstrap_Navbar$AnimatingUp = {ctor: 'AnimatingUp'};
16469var _rundis$elm_bootstrap$Bootstrap_Navbar$StartUp = {ctor: 'StartUp'};
16470var _rundis$elm_bootstrap$Bootstrap_Navbar$AnimatingDown = {ctor: 'AnimatingDown'};
16471var _rundis$elm_bootstrap$Bootstrap_Navbar$StartDown = {ctor: 'StartDown'};
16472var _rundis$elm_bootstrap$Bootstrap_Navbar$Hidden = {ctor: 'Hidden'};
16473var _rundis$elm_bootstrap$Bootstrap_Navbar$initialState = function (toMsg) {
16474	var state = _rundis$elm_bootstrap$Bootstrap_Navbar$State(
16475		{visibility: _rundis$elm_bootstrap$Bootstrap_Navbar$Hidden, height: _elm_lang$core$Maybe$Nothing, windowSize: _elm_lang$core$Maybe$Nothing, dropdowns: _elm_lang$core$Dict$empty});
16476	return {
16477		ctor: '_Tuple2',
16478		_0: state,
16479		_1: A2(_rundis$elm_bootstrap$Bootstrap_Navbar$initWindowSize, toMsg, state)
16480	};
16481};
16482var _rundis$elm_bootstrap$Bootstrap_Navbar$visibilityTransition = F2(
16483	function (withAnimation, visibility) {
16484		var _p39 = {ctor: '_Tuple2', _0: withAnimation, _1: visibility};
16485		_v23_8:
16486		do {
16487			if (_p39.ctor === '_Tuple2') {
16488				if (_p39._0 === true) {
16489					switch (_p39._1.ctor) {
16490						case 'Hidden':
16491							return _rundis$elm_bootstrap$Bootstrap_Navbar$StartDown;
16492						case 'StartDown':
16493							return _rundis$elm_bootstrap$Bootstrap_Navbar$AnimatingDown;
16494						case 'AnimatingDown':
16495							return _rundis$elm_bootstrap$Bootstrap_Navbar$Shown;
16496						case 'Shown':
16497							return _rundis$elm_bootstrap$Bootstrap_Navbar$StartUp;
16498						case 'StartUp':
16499							return _rundis$elm_bootstrap$Bootstrap_Navbar$AnimatingUp;
16500						default:
16501							return _rundis$elm_bootstrap$Bootstrap_Navbar$Hidden;
16502					}
16503				} else {
16504					switch (_p39._1.ctor) {
16505						case 'Hidden':
16506							return _rundis$elm_bootstrap$Bootstrap_Navbar$Shown;
16507						case 'Shown':
16508							return _rundis$elm_bootstrap$Bootstrap_Navbar$Hidden;
16509						default:
16510							break _v23_8;
16511					}
16512				}
16513			} else {
16514				break _v23_8;
16515			}
16516		} while(false);
16517		return _rundis$elm_bootstrap$Bootstrap_Navbar$Hidden;
16518	});
16519var _rundis$elm_bootstrap$Bootstrap_Navbar$toggleHandler = F2(
16520	function (_p41, _p40) {
16521		var _p42 = _p41;
16522		var _p43 = _p40;
16523		var updState = function (h) {
16524			return A2(
16525				_rundis$elm_bootstrap$Bootstrap_Navbar$mapState,
16526				function (s) {
16527					return _elm_lang$core$Native_Utils.update(
16528						s,
16529						{
16530							height: _elm_lang$core$Maybe$Just(h),
16531							visibility: A2(_rundis$elm_bootstrap$Bootstrap_Navbar$visibilityTransition, _p43._0.withAnimation, s.visibility)
16532						});
16533				},
16534				_p42);
16535		};
16536		return A2(
16537			_elm_lang$html$Html_Events$on,
16538			'click',
16539			A2(
16540				_elm_lang$core$Json_Decode$andThen,
16541				function (v) {
16542					return _elm_lang$core$Json_Decode$succeed(
16543						_p43._0.toMsg(
16544							(_elm_lang$core$Native_Utils.cmp(v, 0) > 0) ? updState(v) : updState(
16545								A2(_elm_lang$core$Maybe$withDefault, 0, _p42._0.height))));
16546				},
16547				_rundis$elm_bootstrap$Bootstrap_Navbar$heightDecoder));
16548	});
16549var _rundis$elm_bootstrap$Bootstrap_Navbar$transitionHandler = F2(
16550	function (state, _p44) {
16551		var _p45 = _p44;
16552		return _elm_lang$core$Json_Decode$succeed(
16553			_p45._0.toMsg(
16554				A2(
16555					_rundis$elm_bootstrap$Bootstrap_Navbar$mapState,
16556					function (s) {
16557						return _elm_lang$core$Native_Utils.update(
16558							s,
16559							{
16560								visibility: A2(_rundis$elm_bootstrap$Bootstrap_Navbar$visibilityTransition, _p45._0.withAnimation, s.visibility)
16561							});
16562					},
16563					state)));
16564	});
16565var _rundis$elm_bootstrap$Bootstrap_Navbar$menuAttributes = F2(
16566	function (_p47, _p46) {
16567		var _p48 = _p47;
16568		var _p54 = _p48;
16569		var _p53 = _p48._0.height;
16570		var _p49 = _p46;
16571		var _p52 = _p49;
16572		var defaults = {
16573			ctor: '::',
16574			_0: _elm_lang$html$Html_Attributes$class('collapse navbar-collapse'),
16575			_1: {ctor: '[]'}
16576		};
16577		var _p50 = _p48._0.visibility;
16578		switch (_p50.ctor) {
16579			case 'Hidden':
16580				var _p51 = _p53;
16581				if (_p51.ctor === 'Nothing') {
16582					return ((!_p49._0.withAnimation) || A2(_rundis$elm_bootstrap$Bootstrap_Navbar$shouldHideMenu, _p54, _p52)) ? defaults : {
16583						ctor: '::',
16584						_0: _elm_lang$html$Html_Attributes$style(
16585							{
16586								ctor: '::',
16587								_0: {ctor: '_Tuple2', _0: 'display', _1: 'block'},
16588								
16588_1: {
16589									ctor: '::',
16590									_0: {ctor: '_Tuple2', _0: 'height', _1: '0'},
16591									_1: {
16592										ctor: '::',
16593										_0: {ctor: '_Tuple2', _0: 'overflow', _1: 'hidden'},
16594										_1: {
16595											ctor: '::',
16596											_0: {ctor: '_Tuple2', _0: 'width', _1: '100%'},
16597											_1: {ctor: '[]'}
16598										}
16599									}
16600								}
16601							}),
16602						_1: {ctor: '[]'}
16603					};
16604				} else {
16605					return defaults;
16606				}
16607			case 'StartDown':
16608				return {
16609					ctor: '::',
16610					_0: _rundis$elm_bootstrap$Bootstrap_Navbar$transitionStyle(_elm_lang$core$Maybe$Nothing),
16611					_1: {ctor: '[]'}
16612				};
16613			case 'AnimatingDown':
16614				return {
16615					ctor: '::',
16616					_0: _rundis$elm_bootstrap$Bootstrap_Navbar$transitionStyle(_p53),
16617					_1: {
16618						ctor: '::',
16619						_0: A2(
16620							_elm_lang$html$Html_Events$on,
16621							'transitionend',
16622							A2(_rundis$elm_bootstrap$Bootstrap_Navbar$transitionHandler, _p54, _p52)),
16623						_1: {ctor: '[]'}
16624					}
16625				};
16626			case 'AnimatingUp':
16627				return {
16628					ctor: '::',
16629					_0: _rundis$elm_bootstrap$Bootstrap_Navbar$transitionStyle(_elm_lang$core$Maybe$Nothing),
16630					_1: {
16631						ctor: '::',
16632						_0: A2(
16633							_elm_lang$html$Html_Events$on,
16634							'transitionend',
16635							A2(_rundis$elm_bootstrap$Bootstrap_Navbar$transitionHandler, _p54, _p52)),
16636						_1: {ctor: '[]'}
16637					}
16638				};
16639			case 'StartUp':
16640				return {
16641					ctor: '::',
16642					_0: _rundis$elm_bootstrap$Bootstrap_Navbar$transitionStyle(_p53),
16643					_1: {ctor: '[]'}
16644				};
16645			default:
16646				return A2(
16647					_elm_lang$core$Basics_ops['++'],
16648					defaults,
16649					{
16650						ctor: '::',
16651						_0: _elm_lang$html$Html_Attributes$class('show'),
16652						_1: {ctor: '[]'}
16653					});
16654		}
16655	});
16656var _rundis$elm_bootstrap$Bootstrap_Navbar$Closed = {ctor: 'Closed'};
16657var _rundis$elm_bootstrap$Bootstrap_Navbar$getOrInitDropdownStatus = F2(
16658	function (id, _p55) {
16659		var _p56 = _p55;
16660		return A2(
16661			_elm_lang$core$Maybe$withDefault,
16662			_rundis$elm_bootstrap$Bootstrap_Navbar$Closed,
16663			A2(_elm_lang$core$Dict$get, id, _p56._0.dropdowns));
16664	});
16665var _rundis$elm_bootstrap$Bootstrap_Navbar$ListenClicks = {ctor: 'ListenClicks'};
16666var _rundis$elm_bootstrap$Bootstrap_Navbar$Open = {ctor: 'Open'};
16667var _rundis$elm_bootstrap$Bootstrap_Navbar$dropdownSubscriptions = F2(
16668	function (_p57, toMsg) {
16669		var _p58 = _p57;
16670		var _p65 = _p58._0.dropdowns;
16671		var needsSub = function (s) {
16672			return A2(
16673				_elm_lang$core$List$any,
16674				function (_p59) {
16675					var _p60 = _p59;
16676					return _elm_lang$core$Native_Utils.eq(_p60._1, s);
16677				},
16678				_elm_lang$core$Dict$toList(_p65));
16679		};
16680		var updDropdowns = A2(
16681			_elm_lang$core$Dict$map,
16682			F2(
16683				function (_p61, status) {
16684					var _p62 = status;
16685					switch (_p62.ctor) {
16686						case 'Open':
16687							return _rundis$elm_bootstrap$Bootstrap_Navbar$ListenClicks;
16688						case 'ListenClicks':
16689							return _rundis$elm_bootstrap$Bootstrap_Navbar$Closed;
16690						default:
16691							return _rundis$elm_bootstrap$Bootstrap_Navbar$Closed;
16692					}
16693				}),
16694			_p65);
16695		var updState = A2(
16696			_rundis$elm_bootstrap$Bootstrap_Navbar$mapState,
16697			function (s) {
16698				return _elm_lang$core$Native_Utils.update(
16699					s,
16700					{dropdowns: updDropdowns});
16701			},
16702			_p58);
16703		return _elm_lang$core$Platform_Sub$batch(
16704			{
16705				ctor: '::',
16706				_0: needsSub(_rundis$elm_bootstrap$Bootstrap_Navbar$Open) ? _elm_lang$animation_frame$AnimationFrame$times(
16707					function (_p63) {
16708						return toMsg(updState);
16709					}) : _elm_lang$core$Platform_Sub$none,
16710				_1: {
16711					ctor: '::',
16712					_0: needsSub(_rundis$elm_bootstrap$Bootstrap_Navbar$ListenClicks) ? _elm_lang$mouse$Mouse$clicks(
16713						function (_p64) {
16714							return toMsg(updState);
16715						}) : _elm_lang$core$Platform_Sub$none,
16716					_1: {ctor: '[]'}
16717				}
16718			});
16719	});
16720var _rundis$elm_bootstrap$Bootstrap_Navbar$subscriptions = F2(
16721	function (_p66, toMsg) {
16722		var _p67 = _p66;
16723		var _p71 = _p67;
16724		var updState = function (v) {
16725			return A2(
16726				_rundis$elm_bootstrap$Bootstrap_Navbar$mapState,
16727				function (s) {
16728					return _elm_lang$core$Native_Utils.update(
16729						s,
16730						{visibility: v});
16731				},
16732				_p71);
16733		};
16734		return _elm_lang$core$Platform_Sub$batch(
16735			{
16736				ctor: '::',
16737				_0: function () {
16738					var _p68 = _p67._0.visibility;
16739					switch (_p68.ctor) {
16740						case 'StartDown':
16741							return _elm_lang$animation_frame$AnimationFrame$times(
16742								function (_p69) {
16743									return toMsg(
16744										updState(_rundis$elm_bootstrap$Bootstrap_Navbar$AnimatingDown));
16745								});
16746						case 'StartUp':
16747							return _elm_lang$animation_frame$AnimationFrame$times(
16748								function (_p70) {
16749									return toMsg(
16750										updState(_rundis$elm_bootstrap$Bootstrap_Navbar$AnimatingUp));
16751								});
16752						default:
16753							return _elm_lang$core$Platform_Sub$none;
16754					}
16755				}(),
16756				_1: {
16757					ctor: '::',
16758					_0: _elm_lang$window$Window$resizes(
16759						function (size) {
16760							return toMsg(
16761								A2(
16762									_rundis$elm_bootstrap$Bootstrap_Navbar$mapState,
16763									function (s) {
16764										return _elm_lang$core$Native_Utils.update(
16765											s,
16766											{
16767												windowSize: _elm_lang$core$Maybe$Just(size)
16768											});
16769									},
16770									_p71));
16771						}),
16772					_1: {
16773						ctor: '::',
16774						_0: A2(_rundis$elm_bootstrap$Bootstrap_Navbar$dropdownSubscriptions, _p71, toMsg),
16775						_1: {ctor: '[]'}
16776					}
16777				}
16778			});
16779	});
16780var _rundis$elm_bootstrap$Bootstrap_Navbar$toggleOpen = F3(
16781	function (state, id, _p72) {
16782		var _p73 = _p72;
16783		var currStatus = A2(_rundis$elm_bootstrap$Bootstrap_Navbar$getOrInitDropdownStatus, id, state);
16784		var newStatus = function () {
16785			var _p74 = currStatus;
16786			switch (_p74.ctor) {
16787				case 'Open':
16788					return _rundis$elm_bootstrap$Bootstrap_Navbar$Closed;
16789				case 'ListenClicks':
16790					return _rundis$elm_bootstrap$Bootstrap_Navbar$Closed;
16791				default:
16792					return _rundis$elm_bootstrap$Bootstrap_Navbar$Open;
16793			}
16794		}();
16795		return _p73._0.toMsg(
16796			A2(
16797				_rundis$elm_bootstrap$Bootstrap_Navbar$mapState,
16798				function (s) {
16799					return _elm_lang$core$Native_Utils.update(
16800						s,
16801						{
16802							dropdowns: A3(_elm_lang$core$Dict$insert, id, newStatus, s.dropdowns)
16803						});
16804				},
16805				state));
16806	});
16807var _rundis$elm_bootstrap$Bootstrap_Navbar$renderDropdownToggle = F4(
16808	function (state, id, config, _p75) {
16809		var _p76 = _p75;
16810		return A2(
16811			_elm_lang$html$Html$a,
16812			A2(
16813				_elm_lang$core$Basics_ops['++'],
16814				{
16815					ctor: '::',
16816					_0: _elm_lang$html$Html_Attributes$class('nav-link dropdown-toggle'),
16817					_1: {
16818						ctor: '::',
16819						_0: _elm_lang$html$Html_Attributes$href('#'),
16820						_1: {
16821							ctor: '::',
16822							_0: A3(
16823								_elm_lang$html$Html_Events$onWithOptions,
16824								'click',
16825								{stopPropagation: false, preventDefault: true},
16826								_elm_lang$core$Json_Decode$succeed(
16827									A3(_rundis$elm_bootstrap$Bootstrap_Navbar$toggleOpen, state, id, config))),
16828							_1: {ctor: '[]'}
16829						}
16830					}
16831				},
16832				_p76._0.attributes),
16833			_p76._0.children);
16834	});
16835var _rundis$elm_bootstrap$Bootstrap_Navbar$renderDropdown = F3(
16836	function (state, _p78, _p77) {
16837		var _p79 = _p78;
16838		var _p80 = _p77;
16839		var _p84 = _p80._0.id;
16840		var isShown = !_elm_lang$core$Native_Utils.eq(
16841			A2(_rundis$elm_bootstrap$Bootstrap_Navbar$getOrInitDropdownStatus, _p84, state),
16842			_rundis$elm_bootstrap$Bootstrap_Navbar$Closed);
16843		var needsDropup = A2(
16844			_elm_lang$core$Maybe$withDefault,
16845			false,
16846			A2(
16847				_elm_lang$core$Maybe$map,
16848				function (fix) {
16849					var _p81 = fix;
16850					if (_p81.ctor === 'Bottom') {
16851						return true;
16852					} else {
16853						return false;
16854					}
16855				},
16856				_p79._0.options.fix));
16857		return A2(
16858			_elm_lang$html$Html$li,
16859			{
16860				ctor: '::',
16861				_0: _elm_lang$html$Html_Attributes$classList(
16862					{
16863						ctor: '::',
16864						_0: {ctor: '_Tuple2', _0: 'nav-item', _1: true},
16865						_1: {
16866							ctor: '::',
16867							_0: {ctor: '_Tuple2', _0: 'dropdown', _1: true},
16868							_1: {
16869								ctor: '::',
16870								_0: {ctor: '_Tuple2', _0: 'shown', _1: isShown},
16871								_1: {
16872									ctor: '::',
16873									_0: {ctor: '_Tuple2', _0: 'dropup', _1: needsDropup},
16874									_1: {ctor: '[]'}
16875								}
16876							}
16877						}
16878					}),
16879				_1: {ctor: '[]'}
16880			},
16881			{
16882				ctor: '::',
16883				_0: A4(_rundis$elm_bootstrap$Bootstrap_Navbar$renderDropdownToggle, state, _p84, _p79, _p80._0.toggle),
16884				_1: {
16885					ctor: '::',
16886					_0: A2(
16887						_elm_lang$html$Html$div,
16888						{
16889							ctor: '::',
16890							_0: _elm_lang$html$Html_Attributes$classList(
16891								{
16892									ctor: '::',
16893									_0: {ctor: '_Tuple2', _0: 'dropdown-menu', _1: true},
16894									_1: {
16895										ctor: '::',
16896										_0: {ctor: '_Tuple2', _0: 'show', _1: isShown},
16897										_1: {ctor: '[]'}
16898									}
16899								}),
16900							_1: {ctor: '[]'}
16901						},
16902						A2(
16903							_elm_lang$core$List$map,
16904							function (_p82) {
16905								var _p83 = _p82;
16906								return _p83._0;
16907							},
16908							_p80._0.items)),
16909					_1: {ctor: '[]'}
16910				}
16911			});
16912	});
16913var _rundis$elm_bootstrap$Bootstrap_Navbar$renderNav = F3(
16914	function (state, config, navItems) {
16915		return A2(
16916			_elm_lang$html$Html$ul,
16917			{
16918				ctor: '::',
16919				_0: _elm_lang$html$Html_Attributes$class('navbar-nav mr-auto'),
16920				_1: {ctor: '[]'}
16921			},
16922			A2(
16923				_elm_lang$core$List$map,
16924				function (item) {
16925					var _p85 = item;
16926					if (_p85.ctor === 'Item') {
16927						return _rundis$elm_bootstrap$Bootstrap_Navbar$renderItemLink(_p85._0);
16928					} else {
16929						return A3(_rundis$elm_bootstrap$Bootstrap_Navbar$renderDropdown, state, config, _p85._0);
16930					}
16931				},
16932				navItems));
16933	});
16934var _rundis$elm_bootstrap$Bootstrap_Navbar$view = F2(
16935	function (state, _p86) {
16936		var _p87 = _p86;
16937		var _p90 = _p87;
16938		var _p89 = _p87._0.brand;
16939		return A2(
16940			_elm_lang$html$Html$nav,
16941			_rundis$elm_bootstrap$Bootstrap_Navbar$navbarAttributes(_p87._0.options),
16942			A2(
16943				_elm_lang$core$Basics_ops['++'],
16944				_rundis$elm_bootstrap$Bootstrap_Navbar$maybeBrand(_p89),
16945				A2(
16946					_elm_lang$core$Basics_ops['++'],
16947					{
16948						ctor: '::',
16949						_0: A2(
16950							_elm_lang$html$Html$button,
16951							{
16952								ctor: '::',
16953								_0: _elm_lang$html$Html_Attributes$class(
16954									A2(
16955										_elm_lang$core$Basics_ops['++'],
16956										'navbar-toggler',
16957										A2(
16958											_elm_lang$core$Maybe$withDefault,
16959											'',
16960											A2(
16961												_elm_lang$core$Maybe$map,
16962												function (_p88) {
16963													return ' navbar-toggler-right';
16964												},
16965												_p89)))),
16966								_1: {
16967									ctor: '::',
16968									_0: _elm_lang$html$Html_Attributes$type_('button'),
16969									_1: {
16970										ctor: '::',
16971										_0: A2(_rundis$elm_bootstrap$Bootstrap_Navbar$toggleHandler, state, _p90),
16972										_1: {ctor: '[]'}
16973									}
16974								}
16975							},
16976							{
16977								ctor: '::',
16978								_0: A2(
16979									_elm_lang$html$Html$span,
16980									{
16981										ctor: '::',
16982										_0: _elm_lang$html$Html_Attributes$class('navbar-toggler-icon'),
16983										_1: {ctor: '[]'}
16984									},
16985									{ctor: '[]'}),
16986								_1: {ctor: '[]'}
16987							}),
16988						_1: {ctor: '[]'}
16989					},
16990					{
16991						ctor: '::',
16992						_0: A2(
16993							_elm_lang$html$Html$div,
16994							A2(_rundis$elm_bootstrap$Bootstrap_Navbar$menuAttributes, state, _p90),
16995							{
16996								ctor: '::',
16997								_0: A2(
16998									_elm_lang$html$Html$div,
16999									A2(_rundis$elm_bootstrap$Bootstrap_Navbar$menuWrapperAttributes, state, _p90),
17000									A2(
17001										_elm_lang$core$Basics_ops['++'],
17002										{
17003											ctor: '::',
17004											_0: A3(_rundis$elm_bootstrap$Bootstrap_Navbar$renderNav, state, _p90, _p87._0.items),
17005											_1: {ctor: '[]'}
17006										},
17007										_rundis$elm_bootstrap$Bootstrap_Navbar$renderCustom(_p87._0.customItems))),
17008								_1: {ctor: '[]'}
17009							}),
17010						_1: {ctor: '[]'}
17011					}
17011)));
17012	});
17013var _rundis$elm_bootstrap$Bootstrap_Navbar$Config = function (a) {
17014	return {ctor: 'Config', _0: a};
17015};
17016var _rundis$elm_bootstrap$Bootstrap_Navbar$updateConfig = F2(
17017	function (mapper, _p91) {
17018		var _p92 = _p91;
17019		return _rundis$elm_bootstrap$Bootstrap_Navbar$Config(
17020			mapper(_p92._0));
17021	});
17022var _rundis$elm_bootstrap$Bootstrap_Navbar$withAnimation = function (config) {
17023	return A2(
17024		_rundis$elm_bootstrap$Bootstrap_Navbar$updateConfig,
17025		function (conf) {
17026			return _elm_lang$core$Native_Utils.update(
17027				conf,
17028				{withAnimation: true});
17029		},
17030		config);
17031};
17032var _rundis$elm_bootstrap$Bootstrap_Navbar$items = F2(
17033	function (items, config) {
17034		return A2(
17035			_rundis$elm_bootstrap$Bootstrap_Navbar$updateConfig,
17036			function (conf) {
17037				return _elm_lang$core$Native_Utils.update(
17038					conf,
17039					{items: items});
17040			},
17041			config);
17042	});
17043var _rundis$elm_bootstrap$Bootstrap_Navbar$customItems = F2(
17044	function (items, config) {
17045		return A2(
17046			_rundis$elm_bootstrap$Bootstrap_Navbar$updateConfig,
17047			function (conf) {
17048				return _elm_lang$core$Native_Utils.update(
17049					conf,
17050					{customItems: items});
17051			},
17052			config);
17053	});
17054var _rundis$elm_bootstrap$Bootstrap_Navbar$updateOptions = F2(
17055	function (mapper, _p93) {
17056		var _p94 = _p93;
17057		var _p95 = _p94._0;
17058		return _rundis$elm_bootstrap$Bootstrap_Navbar$Config(
17059			_elm_lang$core$Native_Utils.update(
17060				_p95,
17061				{
17062					options: mapper(_p95.options)
17063				}));
17064	});
17065var _rundis$elm_bootstrap$Bootstrap_Navbar$container = function (config) {
17066	return A2(
17067		_rundis$elm_bootstrap$Bootstrap_Navbar$updateOptions,
17068		function (opts) {
17069			return _elm_lang$core$Native_Utils.update(
17070				opts,
17071				{isContainer: true});
17072		},
17073		config);
17074};
17075var _rundis$elm_bootstrap$Bootstrap_Navbar$scheme = F3(
17076	function (modifier, bgColor, config) {
17077		return A2(
17078			_rundis$elm_bootstrap$Bootstrap_Navbar$updateOptions,
17079			function (opt) {
17080				return _elm_lang$core$Native_Utils.update(
17081					opt,
17082					{
17083						scheme: _elm_lang$core$Maybe$Just(
17084							{modifier: modifier, bgColor: bgColor})
17085					});
17086			},
17087			config);
17088	});
17089var _rundis$elm_bootstrap$Bootstrap_Navbar$toggleAt = F2(
17090	function (size, config) {
17091		return A2(
17092			_rundis$elm_bootstrap$Bootstrap_Navbar$updateOptions,
17093			function (opt) {
17094				return _elm_lang$core$Native_Utils.update(
17095					opt,
17096					{toggleAt: size});
17097			},
17098			config);
17099	});
17100var _rundis$elm_bootstrap$Bootstrap_Navbar$collapseSmall = _rundis$elm_bootstrap$Bootstrap_Navbar$toggleAt(_rundis$elm_bootstrap$Bootstrap_General_Internal$SM);
17101var _rundis$elm_bootstrap$Bootstrap_Navbar$collapseMedium = _rundis$elm_bootstrap$Bootstrap_Navbar$toggleAt(_rundis$elm_bootstrap$Bootstrap_General_Internal$MD);
17102var _rundis$elm_bootstrap$Bootstrap_Navbar$collapseLarge = _rundis$elm_bootstrap$Bootstrap_Navbar$toggleAt(_rundis$elm_bootstrap$Bootstrap_General_Internal$LG);
17103var _rundis$elm_bootstrap$Bootstrap_Navbar$collapseExtraLarge = _rundis$elm_bootstrap$Bootstrap_Navbar$toggleAt(_rundis$elm_bootstrap$Bootstrap_General_Internal$XL);
17104var _rundis$elm_bootstrap$Bootstrap_Navbar$attrs = F2(
17105	function (attrs, config) {
17106		return A2(
17107			_rundis$elm_bootstrap$Bootstrap_Navbar$updateOptions,
17108			function (opt) {
17109				return _elm_lang$core$Native_Utils.update(
17110					opt,
17111					{
17112						attributes: A2(_elm_lang$core$Basics_ops['++'], opt.attributes, attrs)
17113					});
17114			},
17115			config);
17116	});
17117var _rundis$elm_bootstrap$Bootstrap_Navbar$Bottom = {ctor: 'Bottom'};
17118var _rundis$elm_bootstrap$Bootstrap_Navbar$fixBottom = function (config) {
17119	return A2(
17120		_rundis$elm_bootstrap$Bootstrap_Navbar$updateOptions,
17121		function (opts) {
17122			return _elm_lang$core$Native_Utils.update(
17123				opts,
17124				{
17125					fix: _elm_lang$core$Maybe$Just(_rundis$elm_bootstrap$Bootstrap_Navbar$Bottom)
17126				});
17127		},
17128		config);
17129};
17130var _rundis$elm_bootstrap$Bootstrap_Navbar$Top = {ctor: 'Top'};
17131var _rundis$elm_bootstrap$Bootstrap_Navbar$fixTop = function (config) {
17132	return A2(
17133		_rundis$elm_bootstrap$Bootstrap_Navbar$updateOptions,
17134		function (opts) {
17135			return _elm_lang$core$Native_Utils.update(
17136				opts,
17137				{
17138					fix: _elm_lang$core$Maybe$Just(_rundis$elm_bootstrap$Bootstrap_Navbar$Top)
17139				});
17140		},
17141		config);
17142};
17143var _rundis$elm_bootstrap$Bootstrap_Navbar$Light = {ctor: 'Light'};
17144var _rundis$elm_bootstrap$Bootstrap_Navbar$Dark = {ctor: 'Dark'};
17145var _rundis$elm_bootstrap$Bootstrap_Navbar$Class = function (a) {
17146	return {ctor: 'Class', _0: a};
17147};
17148var _rundis$elm_bootstrap$Bootstrap_Navbar$darkCustomClass = function (classString) {
17149	return A2(
17150		_rundis$elm_bootstrap$Bootstrap_Navbar$scheme,
17151		_rundis$elm_bootstrap$Bootstrap_Navbar$Dark,
17152		_rundis$elm_bootstrap$Bootstrap_Navbar$Class(classString));
17153};
17154var _rundis$elm_bootstrap$Bootstrap_Navbar$lightCustomClass = function (classString) {
17155	return A2(
17156		_rundis$elm_bootstrap$Bootstrap_Navbar$scheme,
17157		_rundis$elm_bootstrap$Bootstrap_Navbar$Light,
17158		_rundis$elm_bootstrap$Bootstrap_Navbar$Class(classString));
17159};
17160var _rundis$elm_bootstrap$Bootstrap_Navbar$Custom = function (a) {
17161	return {ctor: 'Custom', _0: a};
17162};
17163var _rundis$elm_bootstrap$Bootstrap_Navbar$darkCustom = function (color) {
17164	return A2(
17165		_rundis$elm_bootstrap$Bootstrap_Navbar$scheme,
17166		_rundis$elm_bootstrap$Bootstrap_Navbar$Dark,
17167		_rundis$elm_bootstrap$Bootstrap_Navbar$Custom(color));
17168};
17169var _rundis$elm_bootstrap$Bootstrap_Navbar$lightCustom = function (color) {
17170	return A2(
17171		_rundis$elm_bootstrap$Bootstrap_Navbar$scheme,
17172		_rundis$elm_bootstrap$Bootstrap_Navbar$Light,
17173		_rundis$elm_bootstrap$Bootstrap_Navbar$Custom(color));
17174};
17175var _rundis$elm_bootstrap$Bootstrap_Navbar$Roled = function (a) {
17176	return {ctor: 'Roled', _0: a};
17177};
17178var _rundis$elm_bootstrap$Bootstrap_Navbar$config = function (toMsg) {
17179	return _rundis$elm_bootstrap$Bootstrap_Navbar$Config(
17180		{
17181			toMsg: toMsg,
17182			withAnimation: false,
17183			brand: _elm_lang$core$Maybe$Nothing,
17184			items: {ctor: '[]'},
17185			customItems: {ctor: '[]'},
17186			options: {
17187				fix: _elm_lang$core$Maybe$Nothing,
17188				isContainer: false,
17189				scheme: _elm_lang$core$Maybe$Just(
17190					{
17191						modifier: _rundis$elm_bootstrap$Bootstrap_Navbar$Light,
17192						bgColor: _rundis$elm_bootstrap$Bootstrap_Navbar$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Light)
17193					}),
17194				toggleAt: _rundis$elm_bootstrap$Bootstrap_General_Internal$XS,
17195				attributes: {ctor: '[]'}
17196			}
17197		});
17198};
17199var _rundis$elm_bootstrap$Bootstrap_Navbar$light = A2(
17200	_rundis$elm_bootstrap$Bootstrap_Navbar$scheme,
17201	_rundis$elm_bootstrap$Bootstrap_Navbar$Light,
17202	_rundis$elm_bootstrap$Bootstrap_Navbar$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Light));
17203var _rundis$elm_bootstrap$Bootstrap_Navbar$dark = A2(
17204	_rundis$elm_bootstrap$Bootstrap_Navbar$scheme,
17205	_rundis$elm_bootstrap$Bootstrap_Navbar$Dark,
17206	_rundis$elm_bootstrap$Bootstrap_Navbar$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Dark));
17207var _rundis$elm_bootstrap$Bootstrap_Navbar$primary = A2(
17208	_rundis$elm_bootstrap$Bootstrap_Navbar$scheme,
17209	_rundis$elm_bootstrap$Bootstrap_Navbar$Dark,
17210	_rundis$elm_bootstrap$Bootstrap_Navbar$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Primary));
17211var _rundis$elm_bootstrap$Bootstrap_Navbar$secondary = A2(
17212	_rundis$elm_bootstrap$Bootstrap_Navbar$scheme,
17213	_rundis$elm_bootstrap$Bootstrap_Navbar$Dark,
17214	_rundis$elm_bootstrap$Bootstrap_Navbar$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Secondary));
17215var _rundis$elm_bootstrap$Bootstrap_Navbar$success = A2(
17216	_rundis$elm_bootstrap$Bootstrap_Navbar$scheme,
17217	_rundis$elm_bootstrap$Bootstrap_Navbar$Dark,
17218	_rundis$elm_bootstrap$Bootstrap_Navbar$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Success));
17219var _rundis$elm_bootstrap$Bootstrap_Navbar$info = A2(
17220	_rundis$elm_bootstrap$Bootstrap_Navbar$scheme,
17221	_rundis$elm_bootstrap$Bootstrap_Navbar$Dar
17221k,
17222	_rundis$elm_bootstrap$Bootstrap_Navbar$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Info));
17223var _rundis$elm_bootstrap$Bootstrap_Navbar$warning = A2(
17224	_rundis$elm_bootstrap$Bootstrap_Navbar$scheme,
17225	_rundis$elm_bootstrap$Bootstrap_Navbar$Dark,
17226	_rundis$elm_bootstrap$Bootstrap_Navbar$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Warning));
17227var _rundis$elm_bootstrap$Bootstrap_Navbar$danger = A2(
17228	_rundis$elm_bootstrap$Bootstrap_Navbar$scheme,
17229	_rundis$elm_bootstrap$Bootstrap_Navbar$Dark,
17230	_rundis$elm_bootstrap$Bootstrap_Navbar$Roled(_rundis$elm_bootstrap$Bootstrap_Internal_Role$Danger));
17231var _rundis$elm_bootstrap$Bootstrap_Navbar$NavDropdown = function (a) {
17232	return {ctor: 'NavDropdown', _0: a};
17233};
17234var _rundis$elm_bootstrap$Bootstrap_Navbar$Item = function (a) {
17235	return {ctor: 'Item', _0: a};
17236};
17237var _rundis$elm_bootstrap$Bootstrap_Navbar$itemLink = F2(
17238	function (attributes, children) {
17239		return _rundis$elm_bootstrap$Bootstrap_Navbar$Item(
17240			{attributes: attributes, children: children});
17241	});
17242var _rundis$elm_bootstrap$Bootstrap_Navbar$itemLinkActive = function (attributes) {
17243	return _rundis$elm_bootstrap$Bootstrap_Navbar$itemLink(
17244		{
17245			ctor: '::',
17246			_0: _elm_lang$html$Html_Attributes$class('active'),
17247			_1: attributes
17248		});
17249};
17250var _rundis$elm_bootstrap$Bootstrap_Navbar$CustomItem = function (a) {
17251	return {ctor: 'CustomItem', _0: a};
17252};
17253var _rundis$elm_bootstrap$Bootstrap_Navbar$textItem = F2(
17254	function (attributes, children) {
17255		return _rundis$elm_bootstrap$Bootstrap_Navbar$CustomItem(
17256			A2(
17257				_elm_lang$html$Html$span,
17258				{
17259					ctor: '::',
17260					_0: _elm_lang$html$Html_Attributes$class('navbar-text'),
17261					_1: attributes
17262				},
17263				children));
17264	});
17265var _rundis$elm_bootstrap$Bootstrap_Navbar$formItem = F2(
17266	function (attributes, children) {
17267		return _rundis$elm_bootstrap$Bootstrap_Navbar$CustomItem(
17268			A2(
17269				_elm_lang$html$Html$form,
17270				{
17271					ctor: '::',
17272					_0: _elm_lang$html$Html_Attributes$class('form-inline'),
17273					_1: attributes
17274				},
17275				children));
17276	});
17277var _rundis$elm_bootstrap$Bootstrap_Navbar$customItem = function (elem) {
17278	return _rundis$elm_bootstrap$Bootstrap_Navbar$CustomItem(elem);
17279};
17280var _rundis$elm_bootstrap$Bootstrap_Navbar$Brand = function (a) {
17281	return {ctor: 'Brand', _0: a};
17282};
17283var _rundis$elm_bootstrap$Bootstrap_Navbar$brand = F3(
17284	function (attributes, children, config) {
17285		return A2(
17286			_rundis$elm_bootstrap$Bootstrap_Navbar$updateConfig,
17287			function (conf) {
17288				return _elm_lang$core$Native_Utils.update(
17289					conf,
17290					{
17291						brand: _elm_lang$core$Maybe$Just(
17292							_rundis$elm_bootstrap$Bootstrap_Navbar$Brand(
17293								A2(
17294									_elm_lang$html$Html$a,
17295									A2(
17296										_elm_lang$core$Basics_ops['++'],
17297										{
17298											ctor: '::',
17299											_0: _elm_lang$html$Html_Attributes$class('navbar-brand'),
17300											_1: {ctor: '[]'}
17301										},
17302										attributes),
17303									children)))
17304					});
17305			},
17306			config);
17307	});
17308var _rundis$elm_bootstrap$Bootstrap_Navbar$Dropdown = function (a) {
17309	return {ctor: 'Dropdown', _0: a};
17310};
17311var _rundis$elm_bootstrap$Bootstrap_Navbar$dropdown = function (config) {
17312	return _rundis$elm_bootstrap$Bootstrap_Navbar$NavDropdown(
17313		_rundis$elm_bootstrap$Bootstrap_Navbar$Dropdown(config));
17314};
17315var _rundis$elm_bootstrap$Bootstrap_Navbar$DropdownToggle = function (a) {
17316	return {ctor: 'DropdownToggle', _0: a};
17317};
17318var _rundis$elm_bootstrap$Bootstrap_Navbar$dropdownToggle = F2(
17319	function (attributes, children) {
17320		return _rundis$elm_bootstrap$Bootstrap_Navbar$DropdownToggle(
17321			{attributes: attributes, children: children});
17322	});
17323var _rundis$elm_bootstrap$Bootstrap_Navbar$DropdownItem = function (a) {
17324	return {ctor: 'DropdownItem', _0: a};
17325};
17326var _rundis$elm_bootstrap$Bootstrap_Navbar$dropdownItem = F2(
17327	function (attributes, children) {
17328		return _rundis$elm_bootstrap$Bootstrap_Navbar$DropdownItem(
17329			A2(
17330				_elm_lang$html$Html$a,
17331				A2(
17332					_elm_lang$core$Basics_ops['++'],
17333					{
17334						ctor: '::',
17335						_0: _elm_lang$html$Html_Attributes$class('dropdown-item'),
17336						_1: {ctor: '[]'}
17337					},
17338					attributes),
17339				children));
17340	});
17341var _rundis$elm_bootstrap$Bootstrap_Navbar$dropdownDivider = _rundis$elm_bootstrap$Bootstrap_Navbar$DropdownItem(
17342	A2(
17343		_elm_lang$html$Html$div,
17344		{
17345			ctor: '::',
17346			_0: _elm_lang$html$Html_Attributes$class('dropdown-divider'),
17347			_1: {ctor: '[]'}
17348		},
17349		{ctor: '[]'}));
17350var _rundis$elm_bootstrap$Bootstrap_Navbar$dropdownHeader = function (children) {
17351	return _rundis$elm_bootstrap$Bootstrap_Navbar$DropdownItem(
17352		A2(
17353			_elm_lang$html$Html$h6,
17354			{
17355				ctor: '::',
17356				_0: _elm_lang$html$Html_Attributes$class('dropdown-header'),
17357				_1: {ctor: '[]'}
17358			},
17359			children));
17360};
17361
17362var _rundis$elm_bootstrap$Bootstrap_Progress$roleClass = function (role) {
17363	return _elm_lang$html$Html_Attributes$class(
17364		function () {
17365			var _p0 = role;
17366			switch (_p0.ctor) {
17367				case 'Success':
17368					return 'bg-success';
17369				case 'Info':
17370					return 'bg-info';
17371				case 'Warning':
17372					return 'bg-warning';
17373				default:
17374					return 'bg-danger';
17375			}
17376		}());
17377};
17378var _rundis$elm_bootstrap$Bootstrap_Progress$toAttributes = function (_p1) {
17379	var _p2 = _p1;
17380	var _p5 = _p2._0;
17381	return _elm_lang$core$List$concat(
17382		{
17383			ctor: '::',
17384			_0: {
17385				ctor: '::',
17386				_0: A2(_elm_lang$html$Html_Attributes$attribute, 'role', 'progressbar'),
17387				_1: {
17388					ctor: '::',
17389					_0: A2(
17390						_elm_lang$html$Html_Attributes$attribute,
17391						'aria-value-now',
17392						_elm_lang$core$Basics$toString(_p5.value)),
17393					_1: {
17394						ctor: '::',
17395						_0: A2(_elm_lang$html$Html_Attributes$attribute, 'aria-valuemin', '0'),
17396						_1: {
17397							ctor: '::',
17398							_0: A2(_elm_lang$html$Html_Attributes$attribute, 'aria-valuemax', '100'),
17399							_1: {
17400								ctor: '::',
17401								_0: _elm_lang$html$Html_Attributes$style(
17402									{
17403										ctor: '::',
17404										_0: {
17405											ctor: '_Tuple2',
17406											_0: 'width',
17407											_1: A2(
17408												_elm_lang$core$Basics_ops['++'],
17409												_elm_lang$core$Basics$toString(_p5.value),
17410												'%')
17411										},
17412										_1: {ctor: '[]'}
17413									}),
17414								_1: {
17415									ctor: '::',
17416									_0: _elm_lang$html$Html_Attributes$classList(
17417										{
17418											ctor: '::',
17419											_0: {ctor: '_Tuple2', _0: 'progress-bar', _1: true},
17420											_1: {
17421												ctor: '::',
17422												_0: {ctor: '_Tuple2', _0: 'progress-bar-striped', _1: _p5.striped || _p5.animated},
17423												_1: {
17424													ctor: '::',
17425													_0: {ctor: '_Tuple2', _0: 'progress-bar-animated', _1: _p5.animated},
17426													_1: {ctor: '[]'}
17427												}
17428											}
17429										}),
17430									_1: {ctor: '[]'}
17431								}
17432							}
17433						}
17434					}
17435				}
17436			},
17437			_1: {
17438				ctor: '::',
17439				_0: function () {
17440					var _p3 = _p5.height;
17441					if (_p3.ctor === 'Just') {
17442						return {
17443							ctor: '::',
17444							_0: _elm_lang$html$Html_Attributes$style(
17445								{
17446									ctor: '::',
17447									_0: {
17448										ctor: '_Tuple2',
17449										_0: 'height',
17450										_1: A2(
17451											_elm_lang$core$Basics_ops['++'],
17452											_elm_lang$core$Basics$toString(_p3._0),
17453											'px')
17454									},
17455									_1: {ctor: '[]'}
17456								}),
17457							_1: {ctor: '[]'}
17458						};
17459					} else {
17460						return {ctor: '[]'};
17461					}
17462				}(),
17463				_1: {
17464					ctor: '::',
17465					_0: function () {
17466						var _p4 = _p5.role;
17467						if (_p4.ctor === 'Just') {
17468							return {
17469								ctor: '::',
17470								_0: _rundis$elm_bootstrap$Bootstrap_Progress$roleClass(_p4._0),
17471								_1: {ctor: '[]'}
17472							};
17473						} else {
17474							return {ctor: '[]'};
17475						}
17476					}(),
17477					_1: {
17478						ctor: '::',
17479						_0: _p5.attributes,
17480						_1: {ctor: '[]'}
17481					}
17482				}
17483			}
17484		});
17485};
17486var _rundis$elm_bootstrap$Bootstrap_Progress$WrapperAttrs = function (a) {
17487	return {ctor: 'WrapperAttrs', _0: a};
17488};
17489var _rundis$elm_bootstrap$Bootstrap_Progress$wrapperAttrs = function (attrs) {
17490	return _rundis$elm_bootstrap$Bootstrap_Progress$WrapperAttrs(attrs);
17491};
17492var _rundis$elm_bootstrap$Bootstrap_Progress$Attrs = function (a) {
17493	return {ctor: 'Attrs', _0: a};
17494};
17495var _rundis$elm_bootstrap$Bootstrap_Progress$attrs = function (attrs) {
17496	return _rundis$elm_bootstrap$Bootstrap_Progress$Attrs(attrs);
17497};
17498var _rundis$elm_bootstrap$Bootstrap_Progress$Animated = function (a) {
17499	return {ctor: 'Animated', _0: a};
17500};
17501var _rundis$elm_bootstrap$Bootstrap_Progress$animated = _rundis$elm_bootstrap$Bootstrap_Progress$Animated(true);
17502var _rundis$elm_bootstrap$Bootstrap_Progress$Striped = function (a) {
17503	return {ctor: 'Striped', _0: a};
17504};
17505var _rundis$elm_bootstrap$Bootstrap_Progress$striped = _rundis$elm_bootstrap$Bootstrap_Progress$Striped(true);
17506var _rundis$elm_bootstrap$Bootstrap_Progress$Roled = function (a) {
17507	return {ctor: 'Roled', _0: a};
17508};
17509var _rundis$elm_bootstrap$Bootstrap_Progress$Label = function (a) {
17510	return {ctor: 'Label', _0: a};
17511};
17512var _rundis$elm_bootstrap$Bootstrap_Progress$label = function (text) {
17513	return _rundis$elm_bootstrap$Bootstrap_Progress$Label(
17514		{
17515			ctor: '::',
17516			_0: _elm_lang$html$Html$text(text),
17517			_1: {ctor: '[]'}
17518		});
17519};
17520var _rundis$elm_bootstrap$Bootstrap_Progress$customLabel = function (children) {
17521	return _rundis$elm_bootstrap$Bootstrap_Progress$Label(children);
17522};
17523var _rundis$elm_bootstrap$Bootstrap_Progress$Height = function (a) {
17524	return {ctor: 'Height', _0: a};
17525};
17526var _rundis$elm_bootstrap$Bootstrap_Progress$height = function (height) {
17527	return _rundis$elm_bootstrap$Bootstrap_Progress$Height(
17528		_elm_lang$core$Maybe$Just(height));
17529};
17530var _rundis$elm_bootstrap$Bootstrap_Progress$Value = function (a) {
17531	return {ctor: 'Value', _0: a};
17532};
17533var _rundis$elm_bootstrap$Bootstrap_Progress$value = function (val) {
17534	return _rundis$elm_bootstrap$Bootstrap_Progress$Value(val);
17535};
17536var _rundis$elm_bootstrap$Bootstrap_Progress$Danger = {ctor: 'Danger'};
17537var _rundis$elm_bootstrap$Bootstrap_Progress$danger = _rundis$elm_bootstrap$Bootstrap_Progress$Roled(
17538	_elm_lang$core$Maybe$Just(_rundis$elm_bootstrap$Bootstrap_Progress$Danger));
17539var _rundis$elm_bootstrap$Bootstrap_Progress$Warning = {ctor: 'Warning'};
17540var _rundis$elm_bootstrap$Bootstrap_Progress$warning = _rundis$elm_bootstrap$Bootstrap_Progress$Roled(
17541	_elm_lang$core$Maybe$Just(_rundis$elm_bootstrap$Bootstrap_Progress$Warning));
17542var _rundis$elm_bootstrap$Bootstrap_Progress$Info = {ctor: 'Info'};
17543var _rundis$elm_bootstrap$Bootstrap_Progress$info = _rundis$elm_bootstrap$Bootstrap_Progress$Roled(
17544	_elm_lang$core$Maybe$Just(_rundis$elm_bootstrap$Bootstrap_Progress$Info));
17545var _rundis$elm_bootstrap$Bootstrap_Progress$Success = {ctor: 'Success'};
17546var _rundis$elm_bootstrap$Bootstrap_Progress$success = _rundis$elm_bootstrap$Bootstrap_Progress$Roled(
17547	_elm_lang$core$Maybe$Just(_rundis$elm_bootstrap$Bootstrap_Progress$Success));
17548var _rundis$elm_bootstrap$Bootstrap_Progress$Options = function (a) {
17549	return {ctor: 'Options', _0: a};
17550};
17551var _rundis$elm_bootstrap$Bootstrap_Progress$applyOption = F2(
17552	function (modifier, _p6) {
17553		var _p7 = _p6;
17554		var _p9 = _p7._0;
17555		return _rundis$elm_bootstrap$Bootstrap_Progress$Options(
17556			function () {
17557				var _p8 = modifier;
17558				switch (_p8.ctor) {
17559					case 'Value':
17560						return _elm_lang$core$Native_Utils.update(
17561							_p9,
17562							{value: _p8._0});
17563					case 'Height':
17564						return _elm_lang$core$Native_Utils.update(
17565							_p9,
17566							{height: _p8._0});
17567					case 'Label':
17568						return _elm_lang$core$Native_Utils.update(
17569							_p9,
17570							{label: _p8._0});
17571					case 'Roled':
17572						return _elm_lang$core$Native_Utils.update(
17573							_p9,
17574							{role: _p8._0});
17575					case 'Striped':
17576						return _elm_lang$core$Native_Utils.update(
17577							_p9,
17578							{striped: _p8._0});
17579					case 'Animated':
17580						return _elm_lang$core$Native_Utils.update(
17581							_p9,
17582							{animated: _p8._0});
17583					case 'Attrs':
17584						return _elm_lang$core$Native_Utils.update(
17585							_p9,
17586							{attributes: _p8._0});
17587					default:
17588						return _elm_lang$core$Native_Utils.update(
17589							_p9,
17590							{wrapperAttributes: _p8._0});
17591				}
17592			}());
17593	});
17594var _rundis$elm_bootstrap$Bootstrap_Progress$defaultOptions = _rundis$elm_bootstrap$Bootstrap_Progress$Options(
17595	{
17596		value: 0,
17597		height: _elm_lang$core$Maybe$Nothing,
17598		label: {ctor: '[]'},
17599		role: _elm_lang$core$Maybe$Nothing,
17600		striped: false,
17601		animated: false,
17602		attributes: {ctor: '[]'},
17603		wrapperAttributes: {ctor: '[]'}
17604	});
17605var _rundis$elm_bootstrap$Bootstrap_Progress$renderBar = function (modifiers) {
17606	var _p10 = A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Progress$applyOption, _rundis$elm_bootstrap$Bootstrap_Progress$defaultOptions, modifiers);
17607	var options = _p10;
17608	var opts = _p10._0;
17609	return A2(
17610		_elm_lang$html$Html$div,
17611		_rundis$elm_bootstrap$Bootstrap_Progress$toAttributes(options),
17612		opts.label);
17613};
17614var _rundis$elm_bootstrap$Bootstrap_Progress$progress = function (modifiers) {
17615	var _p11 = A3(_elm_lang$core$List$foldl, _rundis$elm_bootstrap$Bootstrap_Progress$applyOption, _rundis$elm_bootstrap$Bootstrap_Progress$defaultOptions, modifiers);
17616	var options = _p11._0;
17617	return A2(
17618		_elm_lang$html$Html$div,
17619		{
17620			ctor: '::',
17621			_0: _elm_lang$html$Html_Attributes$class('progress'),
17622			_1: options.wrapperAttributes
17623		},
17624		{
17625			ctor: '::',
17626			_0: _rundis$elm_bootstrap$Bootstrap_Progress$renderBar(modifiers),
17627			_1: {ctor: '[]'}
17628		});
17629};
17630var _rundis$elm_bootstrap$Bootstrap_Progress$progressMulti = function (bars) {
17631	return A2(
17632		_elm_lang$html$Html$div,
17633		{
17634			ctor: '::',
17635			_0: _elm_lang$html$Html_Attributes$class('progress'),
17636			_1: {ctor: '[]'}
17637		},
17638		A2(_elm_lang$core$List$map, _rundis$elm_bootstrap$Bootstrap_Progress$renderBar, bars));
17639};
17640
17641var _rundis$elm_bootstrap$Bootstrap_Utilities_Size$w100 = _elm_lang$html$Html_Attributes$class('w-100');
17642var _rundis$elm_bootstrap$Bootstrap_Utilities_Size$w75 = _elm_lang$html$Html_Attributes$class('w-75');
17643var _rundis$elm_bootstrap$Bootstrap_Utilities_Size$w50 = _elm_lang$html$Html_Attributes$class('w-50');
17644var _rundis$elm_bootstrap$Bootstrap_Utilities_Size$w25 = _elm_lang$html$Html_Attributes$class('w-25');
17645var _rundis$elm_bootstrap$Bootstrap_Utilities_Size$h100 = _elm_lang$html$Html_Attributes$class('h-100');
17646var _rundis$elm_bootstrap$Bootstrap_Utilities_Size$h75 = _elm_lang$html$Html_Attributes$class('h-75');
17647var _rundis$elm_bootstrap$Bootstrap_Utilities_Size$h50 = _elm_lang$html$Html_Attributes$class('h-50');
17648var _rundis$elm_bootstrap$Bootstrap_Utilities_Size$h25 = _elm_lang$html$Html_Attributes$class('h-25');
17649
17650var _user$project$API$encodeContactForm = function (x) {
17651	return _elm_lang$core$Json_Encode$object(
17652		{
17653			ctor: '::',
17654			_0: {
17655				ctor: '_Tuple2',
17656				_0: 'origin',
17657				_1: _elm_lang$core$Json_Encode$string(x.origin)
17658			},
17659			_1: {
17660				ctor: '::',
17661				_0: {
17662					ctor: '_Tuple2',
17663					_0: 'name',
17664					_1: _elm_lang$core$Json_Encode$string(x.name)
17665				},
17666				_1: {
17667					ctor: '::',
17668					_0: {
17669						ctor: '_Tuple2',
17670						_0: 'email',
17671						_1: _elm_lang$core$Json_Encode$string(x.email)
17672					},
17673					_1: {
17674						ctor: '::',
17675						_0: {
17676							ctor: '_Tuple2',
17677							_0: 'subject',
17678							_1: _elm_lang$core$Json_Encode$string(x.subject)
17679						},
17680						_1: {
17681							ctor: '::',
17682							_0: {
17683								ctor: '_Tuple2',
17684								_0: 'message',
17685								_1: _elm_lang$core$Json_Encode$string(x.message)
17686							},
17687							_1: {
17688								ctor: '::',
17689								_0: {
17690									ctor: '_Tuple2',
17691									_0: 'leaveMeBlank',
17692									_1: function (_p0) {
17693										return A2(
17694											_elm_lang$core$Maybe$withDefault,
17695											_elm_lang$core$Json_Encode$null,
17696											A2(_elm_lang$core$Maybe$map, _elm_lang$core$Json_Encode$string, _p0));
17697									}(x.leaveMeBlank)
17698								},
17699								_1: {ctor: '[]'}
17700							}
17701						}
17702					}
17703				}
17704			}
17705		});
17706};
17707var _user$project$API$IOSApp = function (a) {
17708	return function (b) {
17709		return function (c) {
17710			return function (d) {
17711				return function (e) {
17712					return function (f) {
17713						return function (g) {
17714							return function (h) {
17715								return function (i) {
17716									return function (j) {
17717										return {appName: a, images: b, videoLinks: c, itunesUrl: d, appDescription: e, backgroundColor: f, foregroundColor: g, auIdentifier: h, appIcon: i, shortName: j};
17718									};
17719								};
17720							};
17721						};
17722					};
17723				};
17724			};
17725		};
17726	};
17727};
17728var _user$project$API$decodeIOSApp = A3(
17729	_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17730	'shortName',
17731	_elm_lang$core$Json_Decode$string,
17732	A3(
17733		_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17734		'appIcon',
17735		_elm_lang$core$Json_Decode$string,
17736		A3(
17737			_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17738			'auIdentifier',
17739			_elm_lang$core$Json_Decode$string,
17740			A3(
17741				_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17742				'foregroundColor',
17743				_elm_lang$core$Json_Decode$string,
17744				A3(
17745					_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17746					'backgroundColor',
17747					_elm_lang$core$Json_Decode$string,
17748					A3(
17749						_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17750						'appDescription',
17751						_elm_lang$core$Json_Decode$string,
17752						A3(
17753							_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17754							'itunesUrl',
17755							_elm_lang$core$Json_Decode$string,
17756							A3(
17757								_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17758								'videoLinks',
17759								_elm_lang$core$Json_Decode$list(_elm_lang$core$Json_Decode$string),
17760								A3(
17761									_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17762									'images',
17763									_elm_lang$core$Json_Decode$list(_elm_lang$core$Json_Decode$string),
17764									A3(
17765										_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17766										'appName',
17767										_elm_lang$core$Json_Decode$string,
17768										_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$decode(_user$project$API$IOSApp)))))))))));
17769var _user$project$API$get = function (urlBase) {
17770	return _elm_lang$http$Http$request(
17771		{
17772			method: 'GET',
17773			headers: {ctor: '[]'},
17774			url: A2(
17775				_elm_lang$core$String$join,
17776				'/',
17777				{
17778					ctor: '::',
17779					_0: urlBase,
17780					_1: {ctor: '[]'}
17781				}),
17782			body: _elm_lang$http$Http$emptyBody,
17783			expect: _elm_lang$http$Http$expectJson(
17784				_elm_lang$core$Json_Decode$list(_user$project$API$decodeIOSApp)),
17785			timeout: _elm_lang$core$Maybe$Nothing,
17786			withCredentials: false
17787		});
17788};
17789var _user$project$API$getByName = F2(
17790	function (urlBase, capture_name) {
17791		return _elm_lang$http$Http$request(
17792			{
17793				method: 'GET',
17794				headers: {ctor: '[]'},
17795				url: A2(
17796					_elm_lang$core$String$join,
17797					'/',
17798					{
17799						ctor: '::',
17800						_0: urlBase,
17801						_1: {
17802							ctor: '::',
17803							_0: _elm_lang$http$Http$encodeUri(capture_name),
17804							_1: {ctor: '[]'}
17805						}
17806					}),
17807				body: _elm_lang$http$Http$emptyBody,
17808				expect: _elm_lang$http$Http$expectJson(_user$project$API$decodeIOSApp),
17809				timeout: _elm_lang$core$Maybe$Nothing,
17810				withCredentials: false
17811			});
17812	});
17813var _user$project$API$ContactForm = F6(
17814	function (a, b, c, d, e, f) {
17815		return {origin: a, name: b, email: c, subject: d, message: e, leaveMeBlank: f};
17816	});
17817var _user$project$API$decodeContactForm = A3(
17818	_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17819	'leaveMeBlank',
17820	_elm_lang$core$Json_Decode$maybe(_elm_lang$core$Json_Decode$string),
17821	A3(
17822		_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17823		'message',
17824		_elm_lang$core$Json_Decode$string,
17825		A3(
17826			_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17827			'subject',
17828			_elm_lang$core$Json_Decode$string,
17829			A3(
17830				_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17831				'email',
17832				_elm_lang$core$Json_Decode$string,
17833				A3(
17834					_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17835					'name',
17836					_elm_lang$core$Json_Decode$string,
17837					A3(
17838						_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$required,
17839						'origin',
17840						_elm_lang$core$Json_Decode$string,
17841						_NoRedInk$elm_decode_pipeline$Json_Decode_Pipeline$decode(_user$project$API$ContactForm)))))));
17842var _user$project$API$postContact = F2(
17843	function (urlBase, body) {
17844		return _elm_lang$http$Http$request(
17845			{
17846				method: 'POST',
17847				headers: {ctor: '[]'},
17848				url: A2(
17849					_elm_lang$core$String$join,
17850					'/',
17851					{
17852						ctor: '::',
17853						_0: urlBase,
17854						_1: {
17855							ctor: '::',
17856							_0: 'contact',
17857							_1: {ctor: '[]'}
17858						}
17859					}),
17860				body: _elm_lang$http$Http$jsonBody(
17861					_user$project$API$encodeContactForm(body)),
17862				expect: _elm_lang$http$Http$expectJson(_user$project$API$decodeContactForm),
17863				timeout: _elm_lang$core$Maybe$Nothing,
17864				withCredentials: false
17865			});
17866	});
17867
17868var _user$project$StyleSheet$separatorWithColor = function (colorString) {
17869	return A2(
17870		_elm_lang$html$Html$hr,
17871		{
17872			ctor: '::',
17873			_0: _elm_lang$html$Html_Attributes$style(
17874				{
17875					ctor: '::',
17876					_0: {ctor: '_Tuple2', _0: 'background-color', _1: colorString},
17877					_1: {
17878						ctor: '::',
17879						_0: {ctor: '_Tuple2', _0: 'border', _1: 'none'},
17880						_1: {
17881							ctor: '::',
17882							_0: {ctor: '_Tuple2', _0: 'height', _1: '1px'},
17883							_1: {ctor: '[]'}
17884						}
17885					}
17886				}),
17887			_1: {ctor: '[]'}
17888		},
17889		{ctor: '[]'});
17890};
17891var _user$project$StyleSheet$mutedMustard = '#edeae4';
17892var _user$project$StyleSheet$blueGray = '#2e323f';
17893var _user$project$StyleSheet$mainBodyTextStyle = _elm_lang$html$Html_Attributes$style(
17894	{
17895		ctor: '::',
17896		_0: {ctor: '_Tuple2', _0: 'text-align', _1: 'center'},
17897		_1: {
17898			ctor: '::',
17899			_0: {ctor: '_Tuple2', _0: 'width', _1: '70%'},
17900			_1: {
17901				ctor: '::',
17902				_0: {ctor: '_Tuple2', _0: 'margin', _1: 'auto'},
17903				_1: {
17904					ctor: '::',
17905					_0: {ctor: '_Tuple2', _0: 'color', _1: _user$project$StyleSheet$blueGray},
17906					_1: {ctor: '[]'}
17907				}
17908			}
17909		}
17910	});
17911var _user$project$StyleSheet$regular = _elm_lang$html$Html_Attributes$style(
17912	{
17913		ctor: '::',
17914		_0: {ctor: '_Tuple2', _0: 'font-weight', _1: 'normal'},
17915		_1: {ctor: '[]'}
17916	});
17917var _user$project$StyleSheet$semibold = _elm_lang$html$Html_Attributes$style(
17918	{
17919		ctor: '::',
17920		_0: {ctor: '_Tuple2', _0: 'font-weight', _1: 'bold'},
17921		_1: {ctor: '[]'}
17922	});
17923var _user$project$StyleSheet$avenir = _elm_lang$html$Html_Attributes$style(
17924	{
17925		ctor: '::',
17926		_0: {ctor: '_Tuple2', _0: 'font-family', _1: '\"Avenir\", Times'},
17927		_1: {
17928			ctor: '::',
17929			_0: {ctor: '_Tuple2', _0: 'font-feature-settings', _1: '\"liga\" 0'},
17930			_1: {ctor: '[]'}
17931		}
17932	});
17933var _user$project$StyleSheet$embeddedContentStyle = {
17934	ctor: '::',
17935	_0: _elm_lang$html$Html_Attributes$style(
17936		{
17937			ctor: '::',
17938			_0: {ctor: '_Tuple2', _0: 'background-color', _1: _user$project$StyleSheet$mutedMustard},
17939			_1: {
17940				ctor: '::',
17941				_0: {ctor: '_Tuple2', _0: 'padding', _1: '2em'},
17942				_1: {
17943					ctor: '::',
17944					_0: {ctor: '_Tuple2', _0: 'width', _1: '85%'},
17945					_1: {
17946						ctor: '::',
17947						_0: {ctor: '_Tuple2', _0: 'margin', _1: 'auto'},
17948						_1: {
17949							ctor: '::',
17950							_0: {ctor: '_Tuple2', _0: 'color', _1: _user$project$StyleSheet$blueGray},
17951							_1: {
17952								ctor: '::',
17953								_0: {ctor: '_Tuple2', _0: 'margin-top', _1: '2em'},
17954								_1: {
17955									ctor: '::',
17956									_0: {ctor: '_Tuple2', _0: 'letter-spacing', _1: '0.05em'},
17957									_1: {
17958										ctor: '::',
17959										_0: {ctor: '_Tuple2', _0: 'box-shadow', _1: '0px 2px 5px 3px #222222'},
17960										_1: {
17961											ctor: '::',
17962											_0: {ctor: '_Tuple2', _0: 'margin-bottom', _1: '2em'},
17963											_1: {
17964												ctor: '::',
17965												_0: {ctor: '_Tuple2', _0: 'border-radius', _1: '15px'},
17966												_1: {ctor: '[]'}
17967											}
17968										}
17969									}
17970								}
17971							}
17972						}
17973					}
17974				}
17975			}
17976		}),
17977	_1: {
17978		ctor: '::',
17979		_0: _user$project$StyleSheet$avenir,
17980		_1: {
17981			ctor: '::',
17982			_0: _user$project$StyleSheet$regular,
17983			_1: {ctor: '[]'}
17984		}
17985	}
17986};
17987var _user$project$StyleSheet$navBarStyle = {
17988	ctor: '::',
17989	_0: _elm_lang$html$Html_Attributes$style(
17990		{
17991			ctor: '::',
17992			_0: {ctor: '_Tuple2', _0: 'background-color', _1: '#7f6f78'},
17993			_1: {
17994				ctor: '::',
17995				_0: {ctor: '_Tuple2', _0: 'padding', _1: '1em'},
17996				_1: {
17997					ctor: '::',
17998					_0: {ctor: '_Tuple2', _0: 'margin', _1: 'auto'},
17999					_1: {
18000						ctor: '::',
18001						_0: {ctor: '_Tuple2', _0: 'color', _1: '#605b74'},
18002						_1: {
18003							ctor: '::',
18004							_0: {ctor: '_Tuple2', _0: 'margin-bottom', _1: '1.5em'},
18005							_1: {
18006								ctor: '::',
18007								_0: {ctor: '_Tuple2', _0: 'box-shadow', _1: '0px 2px 5px 3px #222222'},
18008								_1: {
18009									ctor: '::',
18010									_0: {ctor: '_Tuple2', _0: 'width', _1: '85%'},
18011									_1: {
18012										ctor: '::',
18013										_0: {ctor: '_Tuple2', _0: 'border-bottom-right-radius', _1: '15px'},
18014										_1: {
18015											ctor: '::',
18016											_0: {ctor: '_Tuple2', _0: 'border-bottom-left-radius', _1: '15px'},
18017											_1: {ctor: '[]'}
18018										}
18019									}
18020								}
18021							}
18022						}
18023					}
18024				}
18025			}
18026		}),
18027	_1: {
18028		ctor: '::',
18029		_0: _user$project$StyleSheet$avenir,
18030		_1: {
18031			ctor: '::',
18032			_0: _user$project$StyleSheet$regular,
18033			_1: {ctor: '[]'}
18034		}
18035	}
18036};
18037var _user$project$StyleSheet$loadingView = A2(
18038	_elm_lang$html$Html$div,
18039	{
18040		ctor: '::',
18041		_0: _elm_lang$html$Html_Attributes$style(
18042			{
18043				ctor: '::',
18044				_0: {ctor: '_Tuple2', _0: 'padding', _1: '5em'},
18045				_1: {ctor: '[]'}
18046			}),
18047		_1: _user$project$StyleSheet$embeddedContentStyle
18048	},
18049	{
18050		ctor: '::',
18051		_0: _rundis$elm_bootstrap$Bootstrap_Progress$progress(
18052			{
18053				ctor: '::',
18054				_0: _rundis$elm_bootstrap$Bootstrap_Progress$value(100),
18055				_1: {
18056					ctor: '::',
18057					_0: _rundis$elm_bootstrap$Bootstrap_Progress$animated,
18058					_1: {ctor: '[]'}
18059				}
18060			}),
18061		_1: {
18062			ctor: '::',
18063			_0: A2(
18064				_elm_lang$html$Html$h3,
18065				{
18066					ctor: '::',
18067					_0: _user$project$StyleSheet$avenir,
18068					_1: {
18069						ctor: '::',
18070						_0: _user$project$StyleSheet$mainBodyTextStyle,
18071						_1: {ctor: '[]'}
18072					}
18073				},
18074				{
18075					ctor: '::',
18076					_0: _elm_lang$html$Html$text('just a moment'),
18077					_1: {ctor: '[]'}
18078				}),
18079			_1: {ctor: '[]'}
18080		}
18081	});
18082
18083var _user$project$About$floraCreativeCopy = _elm_lang$core$String$toLower('\nIn the small city of Wellington, New Zealand - Flora Creative was founded by sound-artists / software developers Timothy J. Barraclough & Paul Mathews.\nfounded in 2016 as a small project to build affordable, simplistic audio effects for iOS has blossomed into a creative endeavour to build boutique,\nutilitarian artwork that enriches the lives of musicians, composers, sound designers and audiences around the world.\n  ');
18084var _user$project$About$view = A2(
18085	_elm_lang$html$Html$div,
18086	{
18087		ctor: '::',
18088		_0: _elm_lang$html$Html_Attributes$style(
18089			{
18090				ctor: '::',
18091				_0: {ctor: '_Tuple2', _0: 'text-align', _1: 'center'},
18092				_1: {ctor: '[]'}
18093			}),
18094		_1: _user$project$StyleSheet$embeddedContentStyle
18095	},
18096	{
18097		ctor: '::',
18098		_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
18099		_1: {
18100			ctor: '::',
18101			_0: _elm_lang$html$Html$text(_user$project$About$floraCreativeCopy),
18102			_1: {
18103				ctor: '::',
18104				_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
18105				_1: {ctor: '[]'}
18106			}
18107		}
18108	});
18109
18110var _user$project$App$videoToSlide = function (url) {
18111	var iframeStyle = _elm_lang$html$Html_Attributes$style(
18112		{
18113			ctor: '::',
18114			_0: {ctor: '_Tuple2', _0: 'top', _1: '0'},
18115			_1: {
18116				ctor: '::',
18117				_0: {ctor: '_Tuple2', _0: 'left', _1: '0'},
18118				_1: {
18119					ctor: '::',
18120					_0: {ctor: '_Tuple2', _0: 'border', _1: '0'},
18121					_1: {
18122						ctor: '::',
18123						_0: {ctor: '_Tuple2', _0: 'height', _1: '100%'},
18124						_1: {
18125							ctor: '::',
18126							_0: {ctor: '_Tuple2', _0: 'width', _1: '100%'},
18127							_1: {
18128								ctor: '::',
18129								_0: {ctor: '_Tuple2', _0: 'position', _1: 'absolute'},
18130								_1: {ctor: '[]'}
18131							}
18132						}
18133					}
18134				}
18135			}
18136		});
18137	var wrapperStyle = _elm_lang$html$Html_Attributes$style(
18138		{
18139			ctor: '::',
18140			_0: {ctor: '_Tuple2', _0: 'overflow', _1: 'hidden'},
18141			_1: {
18142				ctor: '::',
18143				_0: {ctor: '_Tuple2', _0: 'position', _1: 'relative'},
18144				_1: {
18145					ctor: '::',
18146					_0: {ctor: '_Tuple2', _0: 'paddingBottom', _1: '75%'},
18147					_1: {ctor: '[]'}
18148				}
18149			}
18150		});
18151	var embedVideo = A2(
18152		_elm_lang$html$Html$div,
18153		{
18154			ctor: '::',
18155			_0: wrapperStyle,
18156			_1: {ctor: '[]'}
18157		},
18158		{
18159			ctor: '::',
18160			_0: A2(
18161				_elm_lang$html$Html$iframe,
18162				{
18163					ctor: '::',
18164					_0: _elm_lang$html$Html_Attributes$src(url),
18165					_1: {
18166						ctor: '::',
18167						_0: iframeStyle,
18168						_1: {ctor: '[]'}
18169					}
18170				},
18171				{ctor: '[]'}),
18172			_1: {ctor: '[]'}
18173		});
18174	return A2(
18175		_rundis$elm_bootstrap$Bootstrap_Carousel_Slide$config,
18176		{ctor: '[]'},
18177		_rundis$elm_bootstrap$Bootstrap_Carousel_Slide$customContent(embedVideo));
18178};
18179var _user$project$App$cloudinaryURL = 'https://res.cloudinary.com/hqlbxtu1v/image/upload/v1588371998/';
18180var _user$project$App$makeImages = function (appShortname) {
18181	var imageToSlide = function (url) {
18182		return A2(
18183			_rundis$elm_bootstrap$Bootstrap_Carousel_Slide$config,
18184			{
18185				ctor: '::',
18186				_0: _rundis$elm_bootstrap$Bootstrap_Utilities_Size$h100,
18187				_1: {
18188					ctor: '::',
18189					_0: _rundis$elm_bootstrap$Bootstrap_Utilities_Size$w100,
18190					_1: {ctor: '[]'}
18191				}
18192			},
18193			A2(
18194				_rundis$elm_bootstrap$Bootstrap_Carousel_Slide$image,
18195				{ctor: '[]'},
18196				url));
18197	};
18198	var imageURL = function (s) {
18199		return A2(
18200			_elm_lang$core$Basics_ops['++'],
18201			_user$project$App$cloudinaryURL,
18202			A2(
18203				_elm_lang$core$Basics_ops['++'],
18204				'apps/',
18205				A2(_elm_lang$core$Basics_ops['++'], appShortname, s)));
18206	};
18207	return A2(
18208		_elm_lang$core$List$map,
18209		function (_p0) {
18210			return imageToSlide(
18211				imageURL(_p0));
18212		},
18213		{
18214			ctor: '::',
18215			_0: '/0.png',
18216			_1: {
18217				ctor: '::',
18218				_0: '/1.png',
18219				_1: {
18220					ctor: '::',
18221					_0: '/2.png',
18222					_1: {ctor: '[]'}
18223				}
18224			}
18225		});
18226};
18227var _user$project$App$defaultPadding = _elm_lang$html$Html_Attributes$style(
18228	{
18229		ctor: '::',
18230		_0: {ctor: '_Tuple2', _0: 'paddingTop', _1: '0em'},
18231		_1: {
18232			ctor: '::',
18233			_0: {ctor: '_Tuple2', _0: 'paddingBottom', _1: '0em'},
18234			_1: {
18235				ctor: '::',
18236				_0: {ctor: '_Tuple2', _0: 'paddingLeft', _1: '16px'},
18237				_1: {
18238					ctor: '::',
18239					_0: {ctor: '_Tuple2', _0: 'paddingRight', _1: '16px'},
18240					_1: {ctor: '[]'}
18241				}
18242			}
18243		}
18244	});
18245var _user$project$App$appStoreIcon = function (url) {
18246	return A2(
18247		_elm_lang$html$Html$a,
18248		{
18249			ctor: '::',
18250			_0: _elm_lang$html$Html_Attributes$href(url),
18251			_1: {ctor: '[]'}
18252		},
18253		{
18254			ctor: '::',
18255			_0: A2(
18256				_elm_lang$html$Html$img,
18257				{
18258					ctor: '::',
18259					_0: _elm_lang$html$Html_Attributes$src(
18260						A2(_elm_lang$core$Basics_ops['++'], _user$project$App$cloudinaryURL, 'assets/app_store.png')),
18261					_1: {
18262						ctor: '::',
18263						_0: _elm_lang$html$Html_Attributes$style(
18264							{
18265								ctor: '::',
18266								_0: {ctor: '_Tuple2', _0: 'float', _1: 'center'},
18267								_1: {
18268									ctor: '::',
18269									_0: {ctor: '_Tuple2', _0: 'display', _1: 'block'},
18270									_1: {
18271										ctor: '::',
18272										_0: {ctor: '_Tuple2', _0: 'margin-left', _1: 'auto'},
18273										_1: {
18274											ctor: '::',
18275											_0: {ctor: '_Tuple2', _0: 'margin-right', _1: 'auto'},
18276											_1: {
18277												ctor: '::',
18278												_0: {ctor: '_Tuple2', _0: 'width', _1: '10em'},
18279												_1: {ctor: '[]'}
18280											}
18281										}
18282									}
18283								}
18284							}),
18285						_1: {ctor: '[]'}
18286					}
18287				},
18288				{ctor: '[]'}),
18289			_1: {ctor: '[]'}
18290		});
18291};
18292var _user$project$App$update = F2(
18293	function (msg, model) {
18294		var _p1 = msg;
18295		return _elm_lang$core$Native_Utils.update(
18296			model,
18297			{
18298				carouselState: A2(_rundis$elm_bootstrap$Bootstrap_Carousel$update, _p1._0, model.carouselState)
18299			});
18300	});
18301var _user$project$App$init = F2(
18302	function (index, iosapp) {
18303		return {index: index, app: iosapp, carouselState: _rundis$elm_bootstrap$Bootstrap_Carousel$initialState};
18304	});
18305var _user$project$App$Model = F3(
18306	function (a, b, c) {
18307		return {index: a, app: b, carouselState: c};
18308	});
18309var _user$project$App$CarouselMsg = function (a) {
18310	return {ctor: 'CarouselMsg', _0: a};
18311};
18312var _user$project$App$subscriptions = function (model) {
18313	return A2(_rundis$elm_bootstrap$Bootstrap_Carousel$subscriptions, model.carouselState, _user$project$App$CarouselMsg);
18314};
18315var _user$project$App$carousel = function (model) {
18316	var slides = A2(
18317		_elm_lang$core$Basics_ops['++'],
18318		A2(_elm_lang$core$List$map, _user$project$App$videoToSlide, model.app.videoLinks),
18319		_user$project$App$makeImages(model.app.shortName));
18320	var imageToSlide = function (url) {
18321		return A2(
18322			_rundis$elm_bootstrap$Bootstrap_Carousel_Slide$config,
18323			{ctor: '[]'},
18324			A2(
18325				_rundis$elm_bootstrap$Bootstrap_Carousel_Slide$image,
18326				{ctor: '[]'},
18327				url));
18328	};
18329	return A2(
18330		_rundis$elm_bootstrap$Bootstrap_Carousel$view,
18331		model.carouselState,
18332		A2(
18333			_rundis$elm_bootstrap$Bootstrap_Carousel$slides,
18334			slides,
18335			A2(
18336				_rundis$elm_bootstrap$Bootstrap_Carousel$config,
18337				_user$project$App$CarouselMsg,
18338				{
18339					ctor: '::',
18340					_0: _user$project$App$defaultPadding,
18341					_1: {ctor: '[]'}
18342				})));
18343};
18344var _user$project$App$cardView = function (model) {
18345	var alignment = function () {
18346		var _p2 = A2(_elm_lang$core$Basics_ops['%'], model.index, 2);
18347		if (_p2 === 0) {
18348			return _rundis$elm_bootstrap$Bootstrap_Card$align(_rundis$elm_bootstrap$Bootstrap_Text$alignXsRight);
18349		} else {
18350			return _rundis$elm_bootstrap$Bootstrap_Card$align(_rundis$elm_bootstrap$Bootstrap_Text$alignXsLeft);
18351		}
18352	}();
18353	var app = model.app;
18354	var separator = A2(
18355		_elm_lang$html$Html$div,
18356		{
18357			ctor: '::',
18358			_0: _user$project$App$defaultPadding,
18359			_1: {ctor: '[]'}
18360		},
18361		{
18362			ctor: '::',
18363			_0: _user$project$StyleSheet$separatorWithColor(app.foregroundColor),
18364			_1: {ctor: '[]'}
18365		});
18366	return _rundis$elm_bootstrap$Bootstrap_Card$view(
18367		A3(
18368			_rundis$elm_bootstrap$Bootstrap_Card$block,
18369			{ctor: '[]'},
18370			{
18371				ctor: '::',
18372				_0: _rundis$elm_bootstrap$Bootstrap_Card_Block$custom(
18373					A2(
18374						_elm_lang$html$Html$h1,
18375						{
18376							ctor: '::',
18377							_0: _user$project$App$defaultPadding,
18378							_1: {
18379								ctor: '::',
18380								_0: _user$project$StyleSheet$avenir,
18381								_1: {
18382									ctor: '::',
18383									_0: _user$project$StyleSheet$semibold,
18384									_1: {ctor: '[]'}
18385								}
18386							}
18387						},
18388						{
18389							ctor: '::',
18390							_0: _elm_lang$html$Html$text(app.appName),
18391							_1: {ctor: '[]'}
18392						})),
18393				_1: {
18394					ctor: '::',
18395					_0: _rundis$elm_bootstrap$Bootstrap_Card_Block$custom(separator),
18396					_1: {
18397						ctor: '::',
18398						_0: _rundis$elm_bootstrap$Bootstrap_Card_Block$custom(
18399							_user$project$App$carousel(model)),
18400						_1: {
18401							ctor: '::',
18402							_0: _rundis$elm_bootstrap$Bootstrap_Card_Block$custom(separator),
18403							_1: {
18404								ctor: '::',
18405								_0: A2(
18406									_rundis$elm_bootstrap$Bootstrap_Card_Block$titleH5,
18407									{
18408										ctor: '::',
18409										_0: _user$project$App$defaultPadding,
18410										_1: {
18411											ctor: '::',
18412											_0: _user$project$StyleSheet$avenir,
18413											_1: {
18414												ctor: '::',
18415												_0: _user$project$StyleSheet$regular,
18416												_1: {ctor: '[]'}
18417											}
18418										}
18419									},
18420									{
18421										ctor: '::',
18422										_0: _elm_lang$html$Html$text(app.appDescription),
18423										_1: {ctor: '[]'}
18424									}),
18425								_1: {
18426									ctor: '::',
18427									_0: _rundis$elm_bootstrap$Bootstrap_Card_Block$custom(separator),
18428									_1: {
18429										ctor: '::',
18430										_0: _rundis$elm_bootstrap$Bootstrap_Card_Block$custom(
18431											_user$project$App$appStoreIcon(app.itunesUrl)),
18432										_1: {ctor: '[]'}
18433									}
18434								}
18435							}
18436						}
18437					}
18438				}
18439			},
18440			_rundis$elm_bootstrap$Bootstrap_Card$config(
18441				{
18442					ctor: '::',
18443					_0: alignment,
18444					_1: {
18445						ctor: '::',
18446						_0: _rundis$elm_bootstrap$Bootstrap_Card$attrs(
18447							{
18448								ctor: '::',
18449								_0: _elm_lang$html$Html_Attributes$style(
18450									{
18451										ctor: '::',
18452										_0: {ctor: '_Tuple2', _0: 'width', _1: '85%'},
18453										_1: {
18454											ctor: '::',
18455											_0: {ctor: '_Tuple2', _0: 'max-width', _1: '750px'},
18456											_1: {
18457												ctor: '::',
18458												_0: {ctor: '_Tuple2', _0: 'box-shadow', _1: '0px 2px 5px 3px #222222'},
18459												_1: {
18460													ctor: '::',
18461													_0: {ctor: '_Tuple2', _0: 'margin', _1: 'auto'},
18462													_1: {
18463														ctor: '::',
18464														_0: {ctor: '_Tuple2', _0: 'border-width', _1: '0px'},
18465														_1: {
18466															ctor: '::',
18467															_0: {ctor: '_Tuple2', _0: '-webkit-border-radius', _1: '10px'},
18468															_1: {
18469																ctor: '::',
18470																_0: {ctor: '_Tuple2', _0: '-moz-border-radius', _1: '10px'},
18471																_1: {
18472																	ctor: '::',
18473																	_0: {ctor: '_Tuple2', _0: 'border-radius', _1: '10px'},
18474																	_1: {
18475																		ctor: '::',
18476																		_0: {ctor: '_Tuple2', _0: 'letter-spacing', _1: '0.07em'},
18477																		_1: {
18478																			ctor: '::',
18479																			_0: {
18480																				ctor: '_Tuple2',
18481																				_0: 'backgroundColor',
18482																				_1: A2(_elm_lang$core$Basics_ops['++'], '#', app.backgroundColor)
18483																			},
18484																			_1: {
18485																				ctor: '::',
18486																				_0: {ctor: '_Tuple2', _0: 'color', _1: app.foregroundColor},
18487																				_1: {ctor: '[]'}
18488																			}
18489																		}
18490																	}
18491																}
18492															}
18493														}
18494													}
18495												}
18496											}
18497										}
18498									}),
18499								_1: {
18500									ctor: '::',
18501									_0: _elm_lang$html$Html_Attributes$id(app.shortName),
18502									_1: {ctor: '[]'}
18503								}
18504							}),
18505						_1: {ctor: '[]'}
18506					}
18507				})));
18508};
18509var _user$project$App$view = function (model) {
18510	return A2(
18511		_elm_lang$html$Html$div,
18512		{ctor: '[]'},
18513		{
18514			ctor: '::',
18515			_0: A2(
18516				_elm_lang$html$Html$br,
18517				{ctor: '[]'},
18518				{ctor: '[]'}),
18519			_1: {
18520				ctor: '::',
18521				_0: _user$project$App$cardView(model),
18522				_1: {
18523					ctor: '::',
18524					_0: A2(
18525						_elm_lang$html$Html$br,
18526						{ctor: '[]'},
18527						{ctor: '[]'}),
18528					_1: {ctor: '[]'}
18529				}
18530			}
18531		});
18532};
18533
18534var _user$project$Contact$submissionTypeIdentifier = function (submissionType) {
18535	var _p0 = submissionType;
18536	switch (_p0.ctor) {
18537		case 'FeatureRequest':
18538			return 'feature request';
18539		case 'Review':
18540			return 'review';
18541		case 'CrashReport':
18542			return 'bug / crash report';
18543		case 'Support':
18544			return 'support';
18545		default:
18546			return 'other';
18547	}
18548};
18549var _user$project$Contact$canSubmit = function (model) {
18550	return model.nameIsValid && (model.emailIsValid && model.bodyIsValid);
18551};
18552var _user$project$Contact$validateEmail = function (email) {
18553	var validEmail = _elm_lang$core$Regex$caseInsensitive(
18554		_elm_lang$core$Regex$regex('^[a-zA-Z0-9.!#$%&\'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$'));
18555	return A2(_elm_lang$core$Regex$contains, validEmail, email);
18556};
18557var _user$project$Contact$characterCountIsGreaterThan = F2(
18558	function (characterCount, string) {
18559		return _elm_lang$core$Native_Utils.cmp(
18560			_elm_lang$core$String$length(string),
18561			characterCount) > 0;
18562	});
18563var _user$project$Contact$formFromModel = function (model) {
18564	return {
18565		origin: 'Website',
18566		name: model.name,
18567		email: model.email,
18568		subject: _user$project$Contact$submissionTypeIdentifier(model.submissionType),
18569		message: model.bodyText,
18570		leaveMeBlank: _elm_lang$core$Maybe$Nothing
18571	};
18572};
18573var _user$project$Contact$Model = F9(
18574	function (a, b, c, d, e, f, g, h, i) {
18575		return {name: a, nameIsValid: b, email: c, emailIsValid: d, submissionType: e, bodyText: f, bodyIsValid: g, alertVisibility: h, submissionPending: i};
18576	});
18577var _user$project$Contact$FormAPIResponse = function (a) {
18578	return {ctor: 'FormAPIResponse', _0: a};
18579};
18580var _user$project$Contact$submitFormCommand = function (model) {
18581	var contactForm = _user$project$Contact$formFromModel(model);
18582	var postRequest = A2(_user$project$API$postContact, 'https://flora-api.herokuapp.com', contactForm);
18583	return A2(_elm_lang$http$Http$send, _user$project$Contact$FormAPIResponse, postRequest);
18584};
18585var _user$project$Contact$AlertMsg = function (a) {
18586	return {ctor: 'AlertMsg', _0: a};
18587};
18588var _user$project$Contact$alert = function (model) {
18589	return A2(
18590		_rundis$elm_bootstrap$Bootstrap_Alert$view,
18591		model.alertVisibility,
18592		A2(
18593			_rundis$elm_bootstrap$Bootstrap_Alert$children,
18594			{
18595				ctor: '::',
18596				_0: A2(
18597					_elm_lang$html$Html$h6,
18598					{
18599						ctor: '::',
18600						_0: _elm_lang$html$Html_Attributes$style(
18601							{
18602								ctor: '::',
18603								_0: {ctor: '_Tuple2', _0: 'text-align', _1: 'center'},
18604								_1: {ctor: '[]'}
18605							}),
18606						_1: {ctor: '[]'}
18607					},
18608					{
18609						ctor: '::',
18610						_0: _elm_lang$html$Html$text('contact submission sent'),
18611						_1: {ctor: '[]'}
18612					}),
18613				_1: {
18614					ctor: '::',
18615					_0: A2(
18616						_elm_lang$html$Html$p,
18617						{
18618							ctor: '::',
18619							_0: _elm_lang$html$Html_Attributes$style(
18620								{
18621									ctor: '::',
18622									_0: {ctor: '_Tuple2', _0: 'text-align', _1: 'center'},
18623									_1: {ctor: '[]'}
18624								}),
18625							_1: {ctor: '[]'}
18626						},
18627						{
18628							ctor: '::',
18629							_0: _elm_lang$html$Html$text('thanks, we\'ll get back to you in a bit!'),
18630							_1: {ctor: '[]'}
18631						}),
18632					_1: {ctor: '[]'}
18633				}
18634			},
18635			A2(
18636				_rundis$elm_bootstrap$Bootstrap_Alert$dismissable,
18637				_user$project$Contact$AlertMsg,
18638				_rundis$elm_bootstrap$Bootstrap_Alert$info(_rundis$elm_bootstrap$Bootstrap_Alert$config))));
18639};
18640var _user$project$Contact$SetFormSubmissionType = function (a) {
18641	return {ctor: 'SetFormSubmissionType', _0: a};
18642};
18643var _user$project$Contact$SetBodyText = function (a) {
18644	return {ctor: 'SetBodyText', _0: a};
18645};
18646var _user$project$Contact$SetEmail = function (a) {
18647	return {ctor: 'SetEmail', _0: a};
18648};
18649var _user$project$Contact$SetName = function (a) {
18650	return {ctor: 'SetName', _0: a};
18651};
18652var _user$project$Contact$Submit = {ctor: 'Submit'};
18653var _user$project$Contact$Other = {ctor: 'Other'};
18654var _user$project$Contact$Support = {ctor: 'Support'};
18655var _user$project$Contact$CrashReport = {ctor: 'CrashReport'};
18656var _user$project$Contact$Review = {ctor: 'Review'};
18657var _user$project$Contact$FeatureRequest = {ctor: 'FeatureRequest'};
18658var _user$project$Contact$init = {name: '', nameIsValid: false, email: '', emailIsValid: false, submissionType: _user$project$Contact$FeatureRequest, bodyText: '', bodyIsValid: false, alertVisibility: _rundis$elm_bootstrap$Bootstrap_Alert$closed, submissionPending: false};
18659var _user$project$Contact$update = F2(
18660	function (msg, model) {
18661		var _p1 = msg;
18662		switch (_p1.ctor) {
18663			case 'SetName':
18664				var _p2 = _p1._0;
18665				return {
18666					ctor: '_Tuple2',
18667					_0: _elm_lang$core$Native_Utils.update(
18668						model,
18669						{
18670							name: _p2,
18671							nameIsValid: A2(_user$project$Contact$characterCountIsGreaterThan, 3, _p2)
18672						}),
18673					_1: _elm_lang$core$Platform_Cmd$none
18674				};
18675			case 'SetEmail':
18676				var _p3 = _p1._0;
18677				return {
18678					ctor: '_Tuple2',
18679					_0: _elm_lang$core$Native_Utils.update(
18680						model,
18681						{
18682							email: _p3,
18683							emailIsValid: _user$project$Contact$validateEmail(_p3)
18684						}),
18685					_1: _elm_lang$core$Platform_Cmd$none
18686				};
18687			case 'SetBodyText':
18688				var _p4 = _p1._0;
18689				return {
18690					ctor: '_Tuple2',
18691					_0: _elm_lang$core$Native_Utils.update(
18692						model,
18693						{
18694							bodyText: _p4,
18695							bodyIsValid: A2(_user$project$Contact$characterCountIsGreaterThan, 8, _p4)
18696						}),
18697					_1: _elm_lang$core$Platform_Cmd$none
18698				};
18699			case 'SetFormSubmissionType':
18700				return {
18701					ctor: '_Tuple2',
18702					_0: _elm_lang$core$Native_Utils.update(
18703						model,
18704						{submissionType: _p1._0}),
18705					_1: _elm_lang$core$Platform_Cmd$none
18706				};
18707			case 'Submit':
18708				return A2(
18709					_elm_lang$core$Debug$log,
18710					'Submitting form',
18711					{
18712						ctor: '_Tuple2',
18713						_0: _elm_lang$core$Native_Utils.update(
18714							model,
18715							{submissionPending: true}),
18716						_1: _user$project$Contact$submitFormCommand(model)
18717					});
18718			case 'AlertMsg':
18719				return {
18720					ctor: '_Tuple2',
18721					_0: _elm_lang$core$Native_Utils.update(
18722						model,
18723						{alertVisibility: _p1._0}),
18724					_1: _elm_lang$core$Platform_Cmd$none
18725				};
18726			default:
18727				var _p5 = _p1._0;
18728				if (_p5.ctor === 'Err') {
18729					return A2(
18730						_elm_lang$core$Debug$log,
18731						_elm_lang$core$Basics$toString(_p5._0),
18732						{ctor: '_Tuple2', _0: model, _1: _elm_lang$core$Platform_Cmd$none});
18733				} else {
18734					return A2(
18735						_elm_lang$core$Debug$log,
18736						'Sent contact form successfully.',
18737						{
18738							ctor: '_Tuple2',
18739							_0: _elm_lang$core$Native_Utils.update(
18740								_user$project$Contact$init,
18741								{alertVisibility: _rundis$elm_bootstrap$Bootstrap_Alert$shown}),
18742							_1: _elm_lang$core$Platform_Cmd$none
18743						});
18744				}
18745		}
18746	});
18747var _user$project$Contact$submissionTypes = {
18748	ctor: '::',
18749	_0: _user$project$Contact$FeatureRequest,
18750	_1: {
18751		ctor: '::',
18752		_0: _user$project$Contact$Review,
18753		_1: {
18754			ctor: '::',
18755			_0: _user$project$Contact$CrashReport,
18756			_1: {
18757				ctor: '::',
18758				_0: _user$project$Contact$Support,
18759				_1: {
18760					ctor: '::',
18761					_0: _user$project$Contact$Other,
18762					_1: {ctor: '[]'}
18763				}
18764			}
18765		}
18766	}
18767};
18768var _user$project$Contact$submissionTypesRadioButtons = function (model) {
18769	var typeToRadio = function (s) {
18770		return A2(
18771			_rundis$elm_bootstrap$Bootstrap_Form_Radio$create,
18772			{
18773				ctor: '::',
18774				_0: _rundis$elm_bootstrap$Bootstrap_Form_Radio$id(
18775					_user$project$Contact$submissionTypeIdentifier(s)),
18776				_1: {
18777					ctor: '::',
18778					_0: _rundis$elm_bootstrap$Bootstrap_Form_Radio$onClick(
18779						_user$project$Contact$SetFormSubmissionType(s)),
18780					_1: {
18781						ctor: '::',
18782						_0: _rundis$elm_bootstrap$Bootstrap_Form_Radio$checked(
18783							_elm_lang$core$Native_Utils.eq(s, model.submissionType)),
18784						_1: {ctor: '[]'}
18785					}
18786				}
18787			},
18788			_user$project$Contact$submissionTypeIdentifier(s));
18789	};
18790	return _rundis$elm_bootstrap$Bootstrap_Form_Fieldset$view(
18791		A2(
18792			_rundis$elm_bootstrap$Bootstrap_Form_Fieldset$children,
18793			A2(
18794				_rundis$elm_bootstrap$Bootstrap_Form_Radio$radioList,
18795				'myradios',
18796				A2(_elm_lang$core$List$map, typeToRadio, _user$project$Contact$submissionTypes)),
18797			_rundis$elm_bootstrap$Bootstrap_Form_Fieldset$asGroup(_rundis$elm_bootstrap$Bootstrap_Form_Fieldset$config)));
18798};
18799var _user$project$Contact$form = function (model) {
18800	return A2(
18801		_rundis$elm_bootstrap$Bootstrap_Form$form,
18802		{ctor: '[]'},
18803		{
18804			ctor: '::',
18805			_0: A2(
18806				_elm_lang$html$Html$h4,
18807				{
18808					ctor: '::',
18809					_0: _elm_lang$html$Html_Attributes$style(
18810						{
18811							ctor: '::',
18812							_0: {ctor: '_Tuple2', _0: 'text-align', _1: 'center'},
18813							_1: {ctor: '[]'}
18814						}),
18815					_1: {ctor: '[]'}
18816				},
18817				{
18818					ctor: '::',
18819					_0: _elm_lang$html$Html$text('contact us'),
18820					_1: {ctor: '[]'}
18821				}),
18822			_1: {
18823				ctor: '::',
18824				_0: A2(
18825					_elm_lang$html$Html$h6,
18826					{
18827						ctor: '::',
18828						_0: _elm_lang$html$Html_Attributes$style(
18829							{
18830								ctor: '::',
18831								_0: {ctor: '_Tuple2', _0: 'text-align', _1: 'center'},
18832								_1: {ctor: '[]'}
18833							}),
18834						_1: {ctor: '[]'}
18835					},
18836					{
18837						ctor: '::',
18838						_0: _elm_lang$html$Html$text('we\'d love to hear from you.'),
18839						_1: {ctor: '[]'}
18840					}),
18841				_1: {
18842					ctor: '::',
18843					_0: A2(
18844						_elm_lang$html$Html$br,
18845						{ctor: '[]'},
18846						{ctor: '[]'}),
18847					_1: {
18848						ctor: '::',
18849						_0: _rundis$elm_bootstrap$Bootstrap_Form_Input$text(
18850							{
18851								ctor: '::',
18852								_0: _rundis$elm_bootstrap$Bootstrap_Form_Input$attrs(
18853									{
18854										ctor: '::',
18855										_0: _elm_lang$html$Html_Attributes$placeholder('name'),
18856										_1: {ctor: '[]'}
18857									}),
18858								_1: {
18859									ctor: '::',
18860									_0: _rundis$elm_bootstrap$Bootstrap_Form_Input$onInput(_user$project$Contact$SetName),
18861									_1: {
18862										ctor: '::',
18863										_0: _rundis$elm_bootstrap$Bootstrap_Form_Input$value(model.name),
18864										_1: {ctor: '[]'}
18865									}
18866								}
18867							}),
18868						_1: {
18869							ctor: '::',
18870							_0: A2(
18871								_elm_lang$html$Html$br,
18872								{ctor: '[]'},
18873								{ctor: '[]'}),
18874							_1: {
18875								ctor: '::',
18876								_0: _rundis$elm_bootstrap$Bootstrap_Form_Input$email(
18877									{
18878										ctor: '::',
18879										_0: _rundis$elm_bootstrap$Bootstrap_Form_Input$attrs(
18880											{
18881												ctor: '::',
18882												_0: _elm_lang$html$Html_Attributes$placeholder('email'),
18883												_1: {ctor: '[]'}
18884											}),
18885										_1: {
18886											ctor: '::',
18887											_0: _rundis$elm_bootstrap$Bootstrap_Form_Input$onInput(_user$project$Contact$SetEmail),
18888											_1: {
18889												ctor: '::',
18890												_0: _rundis$elm_bootstrap$Bootstrap_Form_Input$value(model.email),
18891												_1: {ctor: '[]'}
18892											}
18893										}
18894									}),
18895								_1: {
18896									ctor: '::',
18897									_0: A2(
18898										_elm_lang$html$Html$br,
18899										{ctor: '[]'},
18900										{ctor: '[]'}),
18901									_1: {
18902										ctor: '::',
18903										_0: _user$project$Contact$submissionTypesRadioButtons(model),
18904										_1: {
18905											ctor: '::',
18906											_0: A2(
18907												_elm_lang$html$Html$br,
18908												{ctor: '[]'},
18909												{ctor: '[]'}),
18910											_1: {
18911												ctor: '::',
18912												_0: _rundis$elm_bootstrap$Bootstrap_Form_Textarea$textarea(
18913													{
18914														ctor: '::',
18915														_0: _rundis$elm_bootstrap$Bootstrap_Form_Textarea$id('message'),
18916														_1: {
18917															ctor: '::',
18918															_0: _rundis$elm_bootstrap$Bootstrap_Form_Textarea$rows(5),
18919															_1: {
18920																ctor: '::',
18921																_0: _rundis$elm_bootstrap$Bootstrap_Form_Textarea$onInput(_user$project$Contact$SetBodyText),
18922																_1: {
18923																	ctor: '::',
18924																	_0: _rundis$elm_bootstrap$Bootstrap_Form_Textarea$value(model.bodyText),
18925																	_1: {ctor: '[]'}
18926																}
18927															}
18928														}
18929													}),
18930												_1: {
18931													ctor: '::',
18932													_0: A2(
18933														_elm_lang$html$Html$br,
18934														{ctor: '[]'},
18935														{ctor: '[]'}),
18936													_1: {
18937														ctor: '::',
18938														_0: A2(
18939															_rundis$elm_bootstrap$Bootstrap_Button$button,
18940															{
18941																ctor: '::',
18942																_0: _rundis$elm_bootstrap$Bootstrap_Button$outlinePrimary,
18943																_1: {
18944																	ctor: '::',
18945																	_0: _rundis$elm_bootstrap$Bootstrap_Button$disabled(
18946																		!_user$project$Contact$canSubmit(model)),
18947																	_1: {
18948																		ctor: '::',
18949																		_0: _rundis$elm_bootstrap$Bootstrap_Button$onClick(_user$project$Contact$Submit),
18950																		_1: {ctor: '[]'}
18951																	}
18952																}
18953															},
18954															{
18955																ctor: '::',
18956																_0: _elm_lang$html$Html$text('submit'),
18957																_1: {ctor: '[]'}
18958															}),
18959														_1: {ctor: '[]'}
18960													}
18961												}
18962											}
18963										}
18964									}
18965								}
18966							}
18967						}
18968					}
18969				}
18970			}
18971		});
18972};
18973var _user$project$Contact$view = function (model) {
18974	var _p6 = model.submissionPending;
18975	if (_p6 === false) {
18976		return A2(
18977			_elm_lang$html$Html$div,
18978			_user$project$StyleSheet$embeddedContentStyle,
18979			{
18980				ctor: '::',
18981				_0: _user$project$Contact$alert(model),
18982				_1: {
18983					ctor: '::',
18984					_0: _user$project$Contact$form(model),
18985					_1: {ctor: '[]'}
18986				}
18987			});
18988	} else {
18989		return _user$project$StyleSheet$loadingView;
18990	}
18991};
18992var _user$project$Contact$identifierToSubmissionType = function (string) {
18993	var _p7 = string;
18994	switch (_p7) {
18995		case 'feature request':
18996			return _user$project$Contact$FeatureRequest;
18997		case 'review':
18998			return _user$project$Contact$Review;
18999		case 'bug / crash report':
19000			return _user$project$Contact$CrashReport;
19001		case 'support':
19002			return _user$project$Contact$Support;
19003		default:
19004			return _user$project$Contact$Other;
19005	}
19006};
19007
19008var _user$project$Privacy$view = function () {
19009	var myStyle = {
19010		ctor: '::',
19011		_0: _elm_lang$html$Html_Attributes$style(
19012			{
19013				ctor: '::',
19014				_0: {ctor: '_Tuple2', _0: 'letter-spacing', _1: 'normal'},
19015				_1: {ctor: '[]'}
19016			}),
19017		_1: _user$project$StyleSheet$embeddedContentStyle
19018	};
19019	return A2(
19020		_elm_lang$html$Html$div,
19021		myStyle,
19022		{
19023			ctor: '::',
19024			_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
19025			_1: {
19026				ctor: '::',
19027				_0: A2(
19028					_elm_lang$html$Html$h1,
19029					{
19030						ctor: '::',
19031						_0: _user$project$StyleSheet$semibold,
19032						_1: {ctor: '[]'}
19033					},
19034					{
19035						ctor: '::',
19036						_0: _elm_lang$html$Html$text('Privacy Policy'),
19037						_1: {ctor: '[]'}
19038					}),
19039				_1: {
19040					ctor: '::',
19041					_0: A2(
19042						_elm_lang$html$Html$p,
19043						{ctor: '[]'},
19044						{
19045							ctor: '::',
19046							_0: _elm_lang$html$Html$text('Effective date: December 12, 2018'),
19047							_1: {ctor: '[]'}
19048						}),
19049					_1: {
19050						ctor: '::',
19051						_0: A2(
19052							_elm_lang$html$Html$p,
19053							{ctor: '[]'},
19054							{
19055								ctor: '::',
19056								_0: _elm_lang$html$Html$text('Flora Creative Limited (\"us\", \"we\", or \"our\") operates the http://flora-creative.com website and the Flora Project mobile applications (the \"Service\").'),
19057								_1: {ctor: '[]'}
19058							}),
19059						_1: {
19060							ctor: '::',
19061							_0: A2(
19062								_elm_lang$html$Html$p,
19063								{ctor: '[]'},
19064								{
19065									ctor: '::',
19066									_0: _elm_lang$html$Html$text('This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data.'),
19067									_1: {ctor: '[]'}
19068								}),
19069							_1: {
19070								ctor: '::',
19071								_0: A2(
19072									_elm_lang$html$Html$p,
19073									{ctor: '[]'},
19074									{
19075										ctor: '::',
19076										_0: _elm_lang$html$Html$text('We use your data to provide and improve the Service. By using the Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, terms used in this Privacy Policy have the same meanings as in our Terms and Conditions.'),
19077										_1: {ctor: '[]'}
19078									}),
19079								_1: {
19080									ctor: '::',
19081									_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
19082									_1: {
19083										ctor: '::',
19084										_0: A2(
19085											_elm_lang$html$Html$h2,
19086											{
19087												ctor: '::',
19088												_0: _user$project$StyleSheet$semibold,
19089												_1: {ctor: '[]'}
19090											},
19091											{
19092												ctor: '::',
19093												_0: _elm_lang$html$Html$text('Information Collection And Use'),
19094												_1: {ctor: '[]'}
19095											}),
19096										_1: {
19097											ctor: '::',
19098											_0: A2(
19099												_elm_lang$html$Html$p,
19100												{ctor: '[]'},
19101												{
19102													ctor: '::',
19103													_0: _elm_lang$html$Html$text('We collect several different types of information for various purposes to provide and improve our Service to you.'),
19104													_1: {ctor: '[]'}
19105												}),
19106											_1: {
19107												ctor: '::',
19108												_0: A2(
19109													_elm_lang$html$Html$h3,
19110													{
19111														ctor: '::',
19112														_0: _user$project$StyleSheet$semibold,
19113														_1: {ctor: '[]'}
19114													},
19115													{
19116														ctor: '::',
19117														_0: _elm_lang$html$Html$text('Types of Data Collected'),
19118														_1: {ctor: '[]'}
19119													}),
19120												_1: {
19121													ctor: '::',
19122													_0: A2(
19123														_elm_lang$html$Html$h4,
19124														{
19125															ctor: '::',
19126															_0: _user$project$StyleSheet$semibold,
19127															_1: {ctor: '[]'}
19128														},
19129														{
19130															ctor: '::',
19131															_0: _elm_lang$html$Html$text('Personal Data'),
19132															_1: {ctor: '[]'}
19133														}),
19134													_1: {
19135														ctor: '::',
19136														_0: A2(
19137															_elm_lang$html$Html$p,
19138															{ctor: '[]'},
19139															{
19140																ctor: '::',
19141																_0: _elm_lang$html$Html$text('While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you (\"Personal Data\"). Personally identifiable information may include, but is not limited to:'),
19142																_1: {ctor: '[]'}
19143															}),
19144														_1: {
19145															ctor: '::',
19146															_0: A2(
19147																_elm_lang$html$Html$ul,
19148																{ctor: '[]'},
19149																{
19150																	ctor: '::',
19151																	_0: A2(
19152																		_elm_lang$html$Html$li,
19153																		{ctor: '[]'},
19154																		{
19155																			ctor: '::',
19156																			_0: _elm_lang$html$Html$text('Email address'),
19157																			_1: {ctor: '[]'}
19158																		}),
19159																	_1: {
19160																		ctor: '::',
19161																		_0: A2(
19162																			_elm_lang$html$Html$li,
19163																			{ctor: '[]'},
19164																			{
19165																				ctor: '::',
19166																				_0: _elm_lang$html$Html$text('Cookies and Usage Data'),
19167																				_1: {ctor: '[]'}
19168																			}),
19169																		_1: {ctor: '[]'}
19170																	}
19171																}),
19172															_1: {
19173																ctor: '::',
19174																_0: A2(
19175																	_elm_lang$html$Html$h4,
19176																	{
19177																		ctor: '::',
19178																		_0: _user$project$StyleSheet$semibold,
19179																		_1: {ctor: '[]'}
19180																	},
19181																	{
19182																		ctor: '::',
19183																		_0: _elm_lang$html$Html$text('Usage Data'),
19184																		_1: {ctor: '[]'}
19185																	}),
19186																_1: {
19187																	ctor: '::',
19188																	_0: A2(
19189																		_elm_lang$html$Html$p,
19190																		{ctor: '[]'},
19191																		{
19192																			ctor: '::',
19193																			_0: _elm_lang$html$Html$text('We may also collect information that your browser sends whenever you visit our Service or when you access the Service by or through a mobile device (\"Usage Data\").'),
19194																			_1: {ctor: '[]'}
19195																		}),
19196																	_1: {
19197																		ctor: '::',
19198																		_0: A2(
19199																			_elm_lang$html$Html$p,
19200																			{ctor: '[]'},
19201																			{
19202																				ctor: '::',
19203																				_0: _elm_lang$html$Html$text('This Usage Data may include information such as your computer\'s Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that you visit, the time and date of your visit, the time spent on those pages, unique device identifiers and other diagnostic data.'),
19204																				_1: {ctor: '[]'}
19205																			}),
19206																		_1: {
19207																			ctor: '::',
19208																			_0: A2(
19209																				_elm_lang$html$Html$p,
19210																				{ctor: '[]'},
19211																				{
19212																					ctor: '::',
19213																					_0: _elm_lang$html$Html$text('When you access the Service by or through a mobile device, this Usage Data may include information such as the type of mobile device you use, your mobile device unique ID, the IP address of your mobile device, your mobile operating system, the type of mobile Internet browser you use, unique device identifiers and other diagnostic data.'),
19214																					_1: {ctor: '[]'}
19215																				}),
19216																			_1: {
19217																				ctor: '::',
19218																				_0: A2(
19219																					_elm_lang$html$Html$h4,
19220																					{
19221																						ctor: '::',
19222																						_0: _user$project$StyleSheet$semibold,
19223																						_1: {ctor: '[]'}
19224																					},
19225																					{
19226																						ctor: '::',
19227																						_0: _elm_lang$html$Html$text('Tracking & Cookies Data'),
19228																						_1: {ctor: '[]'}
19229																					}),
19230																				_1: {
19231																					ctor: '::',
19232																					_0: A2(
19233																						_elm_lang$html$Html$p,
19234																						{ctor: '[]'},
19235																						{
19236																							ctor: '::',
19237																							_0: _elm_lang$html$Html$text('We use cookies and similar tracking technologies to track the activity on our Service and hold certain information.'),
19238																							_1: {ctor: '[]'}
19239																						}),
19240																					_1: {
19241																						ctor: '::',
19242																						_0: A2(
19243																							_elm_lang$html$Html$p,
19244																							{ctor: '[]'},
19245																							{
19246																								ctor: '::',
19247																								_0: _elm_lang$html$Html$text('Cookies are files with small amount of data which may include an anonymous unique identifier. Cookies are sent to your browser from a website and stored on your device. Tracking technologies also used are beacons, tags, and scripts to collect and track information and to improve and analyze our Service.'),
19248																								_1: {ctor: '[]'}
19249																							}),
19250																						_1: {
19251																							ctor: '::',
19252																							_0: A2(
19253																								_elm_lang$html$Html$p,
19254																								{ctor: '[]'},
19255																								{
19256																									ctor: '::',
19257																									_0: _elm_lang$html$Html$text('You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may 
19257not be able to use some portions of our Service.'),
19258																									_1: {ctor: '[]'}
19259																								}),
19260																							_1: {
19261																								ctor: '::',
19262																								_0: A2(
19263																									_elm_lang$html$Html$p,
19264																									{ctor: '[]'},
19265																									{
19266																										ctor: '::',
19267																										_0: _elm_lang$html$Html$text('Examples of Cookies we use:'),
19268																										_1: {ctor: '[]'}
19269																									}),
19270																								_1: {
19271																									ctor: '::',
19272																									_0: A2(
19273																										_elm_lang$html$Html$ul,
19274																										{ctor: '[]'},
19275																										{
19276																											ctor: '::',
19277																											_0: A2(
19278																												_elm_lang$html$Html$li,
19279																												{ctor: '[]'},
19280																												{
19281																													ctor: '::',
19282																													_0: _elm_lang$html$Html$text('Session Cookies - We use Session Cookies to operate our Service.'),
19283																													_1: {ctor: '[]'}
19284																												}),
19285																											_1: {
19286																												ctor: '::',
19287																												_0: A2(
19288																													_elm_lang$html$Html$li,
19289																													{ctor: '[]'},
19290																													{
19291																														ctor: '::',
19292																														_0: _elm_lang$html$Html$text('Preference Cookies - We use Preference Cookies to remember your preferences and various settings.'),
19293																														_1: {ctor: '[]'}
19294																													}),
19295																												_1: {
19296																													ctor: '::',
19297																													_0: A2(
19298																														_elm_lang$html$Html$li,
19299																														{ctor: '[]'},
19300																														{
19301																															ctor: '::',
19302																															_0: _elm_lang$html$Html$text('Security Cookies - We use Security Cookies for security purposes.'),
19303																															_1: {ctor: '[]'}
19304																														}),
19305																													_1: {ctor: '[]'}
19306																												}
19307																											}
19308																										}),
19309																									_1: {
19310																										ctor: '::',
19311																										_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
19312																										_1: {
19313																											ctor: '::',
19314																											_0: A2(
19315																												_elm_lang$html$Html$h2,
19316																												{
19317																													ctor: '::',
19318																													_0: _user$project$StyleSheet$semibold,
19319																													_1: {ctor: '[]'}
19320																												},
19321																												{
19322																													ctor: '::',
19323																													_0: _elm_lang$html$Html$text('Use of Data'),
19324																													_1: {ctor: '[]'}
19325																												}),
19326																											_1: {
19327																												ctor: '::',
19328																												_0: A2(
19329																													_elm_lang$html$Html$p,
19330																													{ctor: '[]'},
19331																													{
19332																														ctor: '::',
19333																														_0: _elm_lang$html$Html$text('Flora Creative Limited uses the collected data for various purposes:'),
19334																														_1: {ctor: '[]'}
19335																													}),
19336																												_1: {
19337																													ctor: '::',
19338																													_0: A2(
19339																														_elm_lang$html$Html$ul,
19340																														{ctor: '[]'},
19341																														{
19342																															ctor: '::',
19343																															_0: A2(
19344																																_elm_lang$html$Html$li,
19345																																{ctor: '[]'},
19346																																{
19347																																	ctor: '::',
19348																																	_0: _elm_lang$html$Html$text('To provide and maintain the Service'),
19349																																	_1: {ctor: '[]'}
19350																																}),
19351																															_1: {
19352																																ctor: '::',
19353																																_0: A2(
19354																																	_elm_lang$html$Html$li,
19355																																	{ctor: '[]'},
19356																																	{
19357																																		ctor: '::',
19358																																		_0: _elm_lang$html$Html$text('To notify you about changes to our Service'),
19359																																		_1: {ctor: '[]'}
19360																																	}),
19361																																_1: {
19362																																	ctor: '::',
19363																																	_0: A2(
19364																																		_elm_lang$html$Html$li,
19365																																		{ctor: '[]'},
19366																																		{
19367																																			ctor: '::',
19368																																			_0: _elm_lang$html$Html$text('To allow you to participate in interactive features of our Service when you choose to do so'),
19369																																			_1: {ctor: '[]'}
19370																																		}),
19371																																	_1: {
19372																																		ctor: '::',
19373																																		_0: A2(
19374																																			_elm_lang$html$Html$li,
19375																																			{ctor: '[]'},
19376																																			{
19377																																				ctor: '::',
19378																																				_0: _elm_lang$html$Html$text('To provide customer care and support'),
19379																																				_1: {ctor: '[]'}
19380																																			}),
19381																																		_1: {
19382																																			ctor: '::',
19383																																			_0: A2(
19384																																				_elm_lang$html$Html$li,
19385																																				{ctor: '[]'},
19386																																				{
19387																																					ctor: '::',
19388																																					_0: _elm_lang$html$Html$text('To provide analysis or valuable information so that we can improve the Service'),
19389																																					_1: {ctor: '[]'}
19390																																				}),
19391																																			_1: {
19392																																				ctor: '::',
19393																																				_0: A2(
19394																																					_elm_lang$html$Html$li,
19395																																					{ctor: '[]'},
19396																																					{
19397																																						ctor: '::',
19398																																						_0: _elm_lang$html$Html$text('To monitor the usage of the Service'),
19399																																						_1: {ctor: '[]'}
19400																																					}),
19401																																				_1: {
19402																																					ctor: '::',
19403																																					_0: A2(
19404																																						_elm_lang$html$Html$li,
19405																																						{ctor: '[]'},
19406																																						{
19407																																							ctor: '::',
19408																																							_0: _elm_lang$html$Html$text('To detect, prevent and address technical issues'),
19409																																							_1: {ctor: '[]'}
19410																																						}),
19411																																					_1: {ctor: '[]'}
19412																																				}
19413																																			}
19414																																		}
19415																																	}
19416																																}
19417																															}
19418																														}),
19419																													_1: {
19420																														ctor: '::',
19421																														_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
19422																														_1: {
19423																															ctor: '::',
19424																															_0: A2(
19425																																_elm_lang$html$Html$h2,
19426																																{
19427																																	ctor: '::',
19428																																	_0: _user$project$StyleSheet$semibold,
19429																																	_1: {ctor: '[]'}
19430																																},
19431																																{
19432																																	ctor: '::',
19433																																	_0: _elm_lang$html$Html$text('Transfer Of Data'),
19434																																	_1: {ctor: '[]'}
19435																																}),
19436																															_1: {
19437																																ctor: '::',
19438																																_0: A2(
19439																																	_elm_lang$html$Html$p,
19440																																	{ctor: '[]'},
19441																																	{
19442																																		ctor: '::',
19443																																		_0: _elm_lang$html$Html$text('Your information, including Personal Data, may be transferred to — and maintained on — computers located outside of your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from your jurisdiction.'),
19444																																		_1: {ctor: '[]'}
19445																																	}),
19446																																_1: {
19447																																	ctor: '::',
19448																																	_0: A2(
19449																																		_elm_lang$html$Html$p,
19450																																		{ctor: '[]'},
19451																																		{
19452																																			ctor: '::',
19453																																			_0: _elm_lang$html$Html$text('If you are located outside New Zealand and choose to provide information to us, please note that we transfer the data, including Personal Data, to New Zealand and process it there.'),
19454																																			_1: {ctor: '[]'}
19455																																		}),
19456																																	_1: {
19457																																		ctor: '::',
19458																																		_0: A2(
19459																																			_elm_lang$html$Html$p,
19460																																			{ctor: '[]'},
19461																																			{
19462																																				ctor: '::',
19463																																				_0: _elm_lang$html$Html$text('Your consent to this Privacy Policy followed by your submission of such information represents your agreement to that transfer.'),
19464																																				_1: {ctor: '[]'}
19465																																			}),
19466																																		_1: {
19467																																			ctor: '::',
19468																																			_0: A2(
19469																																				_elm_lang$html$Html$p,
19470																																				{ctor: '[]'},
19471																																				{
19472																																					ctor: '::',
19473																																					_0: _elm_lang$html$Html$text('Flora Creative Limited will take all steps reasonably necessary to ensure that your data is treated securely and in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of your data and other personal information.'),
19474																																					_1: {ctor: '[]'}
19475																																				}),
19476																																			_1: {
19477																																				ctor: '::',
19478																																				_0: A2(
19479																																					_elm_lang$html$Html$h2,
19480																																					{
19481																																						ctor: '::',
19482																																						_0: _user$project$StyleSheet$semibold,
19483																																						_1: {ctor: '[]'}
19484																																					},
19485																																					{
19486																																						ctor: '::',
19487																																						_0: _elm_lang$html$Html$text('Disclosure Of Data'),
19488																																						_1: {ctor: '[]'}
19489																																					}),
19490																																				_1: {
19491																																					ctor: '::',
19492																																					_0: A2(
19493																																						_elm_lang$html$Html$h3,
19494																																						{
19495																																							ctor: '::',
19496																																							_0: _user$project$StyleSheet$semibold,
19497																																							_1: {ctor: '[]'}
19498																																						},
19499																																						{
19500																																							ctor: '::',
19501																																							_0: _elm_lang$html$Html$text('Legal Requirements'),
19502																																							_1: {ctor: '[]'}
19503																																						}),
19504																																					_1: {
19505																																						ctor: '::',
19506																																						_0: A2(
19507																																							_elm_lang$html$Html$p,
19508																																							{ctor: '[]'},
19509																																							{
19510																																								ctor: '::',
19511																																								_0: _elm_lang$html$Html$text('Flora Creative Limited may disclose your Personal Data in the good faith belief that such action is necessary to:'),
19512																																								_1: {ctor: '[]'}
19513																																							}),
19514																																						_1: {
19515																																							ctor: '::',
19516																																							_0: A2(
19517																																								_elm_lang$html$Html$ul,
19518																																								{ctor: '[]'},
19519																																								{
19520																																									ctor: '::',
19521																																									_0: A2(
19522																																										_elm_lang$html$Html$li,
19523																																										{ctor: '[]'},
19524																																										{
19525																																											ctor: '::',
19526																																											_0: _elm_lang$html$Html$text('To comply with a legal obligation'),
19527																																											_1: {ctor: '[]'}
19528																																										}),
19529																																									_1: {
19530																																										ctor: '::',
19531																																										_0: A2(
19532																																											_elm_lang$html$Html$li,
19533																																											{ctor: '[]'},
19534																																											{
19535																																												ctor: '::',
19536																																												_0: _elm_lang$html$Html$text('To protect and defend the rights or property of Flora Creative Limited'),
19537																																												_1: {ctor: '[]'}
19538																																											}),
19539																																										_1: {
19540																																											ctor: '::',
19541																																											_0: A2(
19542																																												_elm_lang$html$Html$li,
19543																																												{ctor: '[]'},
19544																																												{
19545																																													ctor: '::',
19546																																													_0: _elm_lang$html$Html$text('To prevent or investigate possible wrongdoing in connection with the Service'),
19547																																													_1: {ctor: '[]'}
19548																																												}),
19549																																											_1: {
19550																																												ctor: '::',
19551																																												_0: A2(
19552																																													_elm_lang$html$Html$li,
19553																																													{ctor: '[]'},
19554																																													{
19555																																														ctor: '::',
19556																																														_0: _elm_lang$html$Html$text('To protect the personal safety of users of the Service or the public'),
19557																																														_1: {ctor: '[]'}
19558																															
19558														}),
19559																																												_1: {
19560																																													ctor: '::',
19561																																													_0: A2(
19562																																														_elm_lang$html$Html$li,
19563																																														{ctor: '[]'},
19564																																														{
19565																																															ctor: '::',
19566																																															_0: _elm_lang$html$Html$text('To protect against legal liability'),
19567																																															_1: {ctor: '[]'}
19568																																														}),
19569																																													_1: {ctor: '[]'}
19570																																												}
19571																																											}
19572																																										}
19573																																									}
19574																																								}),
19575																																							_1: {
19576																																								ctor: '::',
19577																																								_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
19578																																								_1: {
19579																																									ctor: '::',
19580																																									_0: A2(
19581																																										_elm_lang$html$Html$h2,
19582																																										{
19583																																											ctor: '::',
19584																																											_0: _user$project$StyleSheet$semibold,
19585																																											_1: {ctor: '[]'}
19586																																										},
19587																																										{
19588																																											ctor: '::',
19589																																											_0: _elm_lang$html$Html$text('Security Of Data'),
19590																																											_1: {ctor: '[]'}
19591																																										}),
19592																																									_1: {
19593																																										ctor: '::',
19594																																										_0: A2(
19595																																											_elm_lang$html$Html$p,
19596																																											{ctor: '[]'},
19597																																											{
19598																																												ctor: '::',
19599																																												_0: _elm_lang$html$Html$text('The security of your data is important to us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While we strive to use commercially acceptable means to protect your Personal Data, we cannot guarantee its absolute security.'),
19600																																												_1: {ctor: '[]'}
19601																																											}),
19602																																										_1: {
19603																																											ctor: '::',
19604																																											_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
19605																																											_1: {
19606																																												ctor: '::',
19607																																												_0: A2(
19608																																													_elm_lang$html$Html$h2,
19609																																													{
19610																																														ctor: '::',
19611																																														_0: _user$project$StyleSheet$semibold,
19612																																														_1: {ctor: '[]'}
19613																																													},
19614																																													{
19615																																														ctor: '::',
19616																																														_0: _elm_lang$html$Html$text('Service Providers'),
19617																																														_1: {ctor: '[]'}
19618																																													}),
19619																																												_1: {
19620																																													ctor: '::',
19621																																													_0: A2(
19622																																														_elm_lang$html$Html$p,
19623																																														{ctor: '[]'},
19624																																														{
19625																																															ctor: '::',
19626																																															_0: _elm_lang$html$Html$text('We may employ third party companies and individuals to facilitate our Service (\"Service Providers\"), to provide the Service on our behalf, to perform Service-related services or to assist us in analyzing how our Service is used.'),
19627																																															_1: {ctor: '[]'}
19628																																														}),
19629																																													_1: {
19630																																														ctor: '::',
19631																																														_0: A2(
19632																																															_elm_lang$html$Html$p,
19633																																															{ctor: '[]'},
19634																																															{
19635																																																ctor: '::',
19636																																																_0: _elm_lang$html$Html$text('These third parties have access to your Personal Data only to perform these tasks on our behalf and are obligated not to disclose or use it for any other purpose.'),
19637																																																_1: {ctor: '[]'}
19638																																															}),
19639																																														_1: {
19640																																															ctor: '::',
19641																																															_0: A2(
19642																																																_elm_lang$html$Html$h3,
19643																																																{
19644																																																	ctor: '::',
19645																																																	_0: _user$project$StyleSheet$semibold,
19646																																																	_1: {ctor: '[]'}
19647																																																},
19648																																																{
19649																																																	ctor: '::',
19650																																																	_0: _elm_lang$html$Html$text('Analytics'),
19651																																																	_1: {ctor: '[]'}
19652																																																}),
19653																																															_1: {
19654																																																ctor: '::',
19655																																																_0: A2(
19656																																																	_elm_lang$html$Html$p,
19657																																																	{ctor: '[]'},
19658																																																	{
19659																																																		ctor: '::',
19660																																																		_0: _elm_lang$html$Html$text('We may use third-party Service Providers to monitor and analyze the use of our Service.'),
19661																																																		_1: {ctor: '[]'}
19662																																																	}),
19663																																																_1: {
19664																																																	ctor: '::',
19665																																																	_0: A2(
19666																																																		_elm_lang$html$Html$ul,
19667																																																		{ctor: '[]'},
19668																																																		{
19669																																																			ctor: '::',
19670																																																			_0: A2(
19671																																																				_elm_lang$html$Html$li,
19672																																																				{ctor: '[]'},
19673																																																				{
19674																																																					ctor: '::',
19675																																																					_0: A2(
19676																																																						_elm_lang$html$Html$p,
19677																																																						{
19678																																																							ctor: '::',
19679																																																							_0: _user$project$StyleSheet$semibold,
19680																																																							_1: {ctor: '[]'}
19681																																																						},
19682																																																						{
19683																																																							ctor: '::',
19684																																																							_0: _elm_lang$html$Html$text('Google Analytics'),
19685																																																							_1: {ctor: '[]'}
19686																																																						}),
19687																																																					_1: {
19688																																																						ctor: '::',
19689																																																						_0: A2(
19690																																																							_elm_lang$html$Html$p,
19691																																																							{ctor: '[]'},
19692																																																							{
19693																																																								ctor: '::',
19694																																																								_0: _elm_lang$html$Html$text('Google Analytics is a web analytics service offered by Google that tracks and reports website traffic. Google uses the data collected to track and monitor the use of our Service. This data is shared with other Google services. Google may use the collected data to contextualize and personalize the ads of its own advertising network.'),
19695																																																								_1: {ctor: '[]'}
19696																																																							}),
19697																																																						_1: {
19698																																																							ctor: '::',
19699																																																							_0: A2(
19700																																																								_elm_lang$html$Html$p,
19701																																																								{ctor: '[]'},
19702																																																								{
19703																																																									ctor: '::',
19704																																																									_0: _elm_lang$html$Html$text('For more information on the privacy practices of Google, please visit the Google Privacy & Terms web page:'),
19705																																																									_1: {ctor: '[]'}
19706																																																								}),
19707																																																							_1: {
19708																																																								ctor: '::',
19709																																																								_0: A2(
19710																																																									_elm_lang$html$Html$a,
19711																																																									{
19712																																																										ctor: '::',
19713																																																										_0: _elm_lang$html$Html_Attributes$href('https://policies.google.com/privacy?hl=en'),
19714																																																										_1: {ctor: '[]'}
19715																																																									},
19716																																																									{
19717																																																										ctor: '::',
19718																																																										_0: _elm_lang$html$Html$text('https://policies.google.com/privacy?hl=en'),
19719																																																										_1: {ctor: '[]'}
19720																																																									}),
19721																																																								_1: {ctor: '[]'}
19722																																																							}
19723																																																						}
19724																																																					}
19725																																																				}),
19726																																																			_1: {ctor: '[]'}
19727																																																		}),
19728																																																	_1: {
19729																																																		ctor: '::',
19730																																																		_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
19731																																																		_1: {
19732																																																			ctor: '::',
19733																																																			_0: A2(
19734																																																				_elm_lang$html$Html$h2,
19735																																																				{
19736																																																					ctor: '::',
19737																																																					_0: _user$project$StyleSheet$semibold,
19738																																																					_1: {ctor: '[]'}
19739																																																				},
19740																																																				{
19741																																																					ctor: '::',
19742																																																					_0: _elm_lang$html$Html$text('Links To Other Sites'),
19743																																																					_1: {ctor: '[]'}
19744																																																				}),
19745																																																			_1: {
19746																																																				ctor: '::',
19747																																																				_0: A2(
19748																																																					_elm_lang$html$Html$p,
19749																																																					{ctor: '[]'},
19750																																																					{
19751																																																						ctor: '::',
19752																																																						_0: _elm_lang$html$Html$text('Our Service may contain links to other sites that are not operated by us. If you click on a third party link, you will be directed to that third party\'s site. We strongly advise you to review the Privacy Policy of every site you visit.'),
19753																																																						_1: {ctor: '[]'}
19754																																																					}),
19755																																																				_1: {
19756																																																					ctor: '::',
19757																																																					_0: A2(
19758																																																						_elm_lang$html$Html$p,
19759																																																						{ctor: '[]'},
19760																																																						{
19761																																																							ctor: '::',
19762																																																							_0: _elm_lang$html$Html$text('We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.'),
19763																																																							_1: {ctor: '[]'}
19764																																																						}),
19765																																																					_1: {
19766																																																						ctor: '::',
19767																																																						_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
19768																																																						_1: {
19769																																																							ctor: '::',
19770																																																							_0: A2(
19771																																																								_elm_lang$html$Html$h2,
19772																																																								{
19773																																																									ctor: '::',
19774																																																									_0: _user$project$StyleSheet$semibold,
19775																																																									_1: {ctor: '[]'}
19776																																																								},
19777																																																								{
19778																																																									ctor: '::',
19779																																																									_0: _elm_lang$html$Html$text('Children\'s Privacy'),
19780																																																									_1: {ctor: '[]'}
19781																																																								}),
19782																																																							_1: {
19783																																																								ctor: '::',
19784																																																								_0: A2(
19785																																																									_elm_lang$html$Html$p,
19786																																																									{ctor: '[]'},
19787																																																									{
19788																																																										ctor: '::',
19789																																																										_0: _elm_lang$html$Html$text('Our Service does not address anyone under the age of 18 (\"Children\").'),
19790																																																										_1: {ctor: '[]'}
19791																																																									}),
19792																																																								_1: {
19793																																																									ctor: '::',
19794																																																									_0: A2(
19795																																																										_elm_lang$html$Html$p,
19796																																																										{ctor: '[]'},
19797																																																										{
19798																																																											ctor: '::',
19799																																																											_0: _elm_lang$html$Html$text('We do not knowingly collect personally identifiable information from anyone under the age of 18. If you are a parent or guardian and you are aware that your Children has provided us with Personal Data, please contact us. If we become aware that we have collected Personal Data from children without verification of parental consent, we take steps to remove that information from our servers.'),
19800																																																											_1: {ctor: '[]'}
19801																																																										}),
19802																																																									_1: {
19803																																																										ctor: '::',
19804																																																										_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
19805																																																										_1: {
19806																																																											ctor: '::',
19807																																																											_0: A2(
19808																																																												_elm_lang$html$Html$h2,
19809																																																												{
19810																																																													ctor: '::',
19811																																																													_0: _user$project$StyleSheet$semibold,
19812																																																													_1: {ctor: '[]'}
19813																																																												},
19814																																																												{
19815																																																													ctor: '::',
19816																																																													_0: _elm_lang$html$Html$text('Changes To This Privacy Policy'),
19817																																																													_1: {ctor: '[]'}
19818																																																												}),
19819																																																											_1: {
19820																																																												ctor: '::',
19821																																																												_0: A2(
19822																																																													_elm_lang$html$Html$p,
19823																																																													{ctor: '[]'},
19824																																																													{
19825																																																														ctor: '::',
19826																																																														_0: _elm_lang$html$Html$text('We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page.'),
19827																																																														_1: {ctor: '[]'}
19828																																																													}),
19829																																																												_1: {
19830																																																													ctor: '::',
19831																																																													_0: A2(
19832																																																														_elm_lang$html$Html$p,
19833																																																														{ctor: '[]'},
19834																																																														{
19835																																																															ctor: '::',
19836																																																															_0: _elm_lang$html$Html$text('We will let you know via email and/or a prominent notice on our Service, prior to the change becoming effective and update the \"effective date\" at the top of this Privacy Policy.'),
19837																																																															_1: {ctor: '[]'}
19838																																																														}),
19839																																																													_1: {
19840																																																														ctor: '::',
19841																																																														_0: A2(
19842																																																															_elm_lang$html$Html$p,
19843																																																															{ctor: '[]'},
19844																																																															{
19845																																																																ctor: '::',
19846																																																																_0: _elm_lang$html$Html$text('You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.'),
19847																																																																_1: {ctor: '[]'}
19848																																																															}),
19849																																																														_1: {
19850																																																															ctor: '::',
19851																																																															_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
19852																																																															_1: {
19853																																																																ctor: '::',
19854																																																																_0: A2(
19855																																																																	_elm_lang$html$Html$h2,
19856																																																																	{
19857																																																																		ctor: '::',
19858																																																																		_0: _user$project$StyleSheet$semibold,
19859																																																																		_1: {ctor: '[]'}
19860																																																																	},
19861																																																																	{
19862																																																																		ctor: '::',
19863																																																																		_0: _elm_lang$html$Html$text('Contact Us'),
19864																																																																		_1: {ctor: '[]'}
19865																																																																	}),
19866																																																																_1: {
19867																																																																	ctor: '::',
19868																																																																	_0: A2(
19869																																																																		_elm_lang$html$Html$p,
19870																																																																		{ctor: '[]'},
19871																																																																		{
19872																																																																			ctor: '::',
19873																																																																			_0: _elm_lang$html$Html$text('If you have any questions about this Privacy Policy, please contact us:'),
19874																																																																			_1: {ctor: '[]'}
19875																																																																		}),
19876																																																																	_1: {
19877																																																																		ctor: '::',
19878																																																																		_0: A2(
19879																																																																			_elm_lang$html$Html$ul,
19880																																																																			{ctor: '[]'},
19881																																																																			{
19882																																																																				ctor: '::',
19883																																																																				_0: A2(
19884																																																																					_elm_lang$html$Html$li,
19885																																																																					{ctor: '[]'},
19886																																																																					{
19887																																																																						ctor: '::',
19888																																																																						_0: _elm_lang$html$Html$text('By email: [email protected]'),
19889																																																																						_1: {ctor: '[]'}
19890																																																																					}),
19891																																																																				_1: {ctor: '[]'}
19892																																																																			}),
19893																																																																		_1: {ctor: '[]'}
19894																																																																	}
19895																																																																}
19896																																																															}
19897																																																														}
19898																																																													}
19899																																																												}
19900																																																											}
19901																																																										}
19902																																																									}
19903																																																								}
19904																																																							}
19905																																																						}
19906																																																					}
19907																																																				}
19908																																																			}
19909																																																		}
19910																																																	}
19911																																																}
19912																																															}
19913																																														}
19914																																													}
19915																																												}
19916																																											}
19917																																										}
19918																																									}
19919																																								}
19920																																							}
19921																																						}
19922																																					}
19923																																				}
19924																																			}
19925																																		}
19926																																	}
19927																																}
19928																															}
19929																														}
19930																													}
19931																												}
19932																											}
19933																										}
19934																									}
19935																								}
19936																							}
19937																						}
19938																					}
19939																				}
19940																			}
19941																		}
19942																	}
19943																}
19944															}
19945														}
19946													}
19947												}
19948											}
19949										}
19950									}
19951								}
19952							}
19953						}
19954					}
19955				}
19956			}
19957		});
19958}();
19959
19960var _user$project$FloraWeb$viewLocation = function (location) {
19961	return A2(
19962		_elm_lang$html$Html$li,
19963		{ctor: '[]'},
19964		{
19965			ctor: '::',
19966			_0: _elm_lang$html$Html$text(
19967				A2(_elm_lang$core$Basics_ops['++'], location.pathname, location.hash)),
19968			_1: {ctor: '[]'}
19969		});
19970};
19971var _user$project$FloraWeb$viewLink = function (_p0) {
19972	var _p1 = _p0;
19973	return A2(
19974		_elm_lang$html$Html$li,
19975		{ctor: '[]'},
19976		{
19977			ctor: '::',
19978			_0: A2(
19979				_elm_lang$html$Html$a,
19980				{
19981					ctor: '::',
19982					_0: _elm_lang$html$Html_Attributes$href(
19983						A2(_elm_lang$core$Basics_ops['++'], '#', _p1._1)),
19984					_1: {ctor: '[]'}
19985				},
19986				{
19987					ctor: '::',
19988					_0: _elm_lang$html$Html$text(_p1._0),
19989					_1: {ctor: '[]'}
19990				}),
19991			_1: {ctor: '[]'}
19992		});
19993};
19994var _user$project$FloraWeb$appIconStyle = _elm_lang$html$Html_Attributes$style(
19995	{
19996		ctor: '::',
19997		_0: {ctor: '_Tuple2', _0: 'width', _1: '35%'},
19998		_1: {
19999			ctor: '::',
20000			_0: {ctor: '_Tuple2', _0: 'border-radius', _1: '20%'},
20001			_1: {
20002				ctor: '::',
20003				_0: {ctor: '_Tuple2', _0: 'display', _1: 'block'},
20004				_1: {
20005					ctor: '::',
20006					_0: {ctor: '_Tuple2', _0: 'margin', _1: '0 auto'},
20007					_1: {ctor: '[]'}
20008				}
20009			}
20010		}
20011	});
20012var _user$project$FloraWeb$floraProjectDescription = '\n    the flora project was conceived as a suite of beautifully simple, cpu-effective audio effects for ios devices, reminiscent of stomp-box style effects.\n\n\n    a simple, consistent and intuitive interface is presented with just the right number of parameters to allow users to quickly dial in the perfect sound.\n    ';
20013var _user$project$FloraWeb$floraProjectTitle = function (model) {
20014	return {
20015		ctor: '::',
20016		_0: A2(
20017			_elm_lang$html$Html$h1,
20018			{
20019				ctor: '::',
20020				_0: _user$project$StyleSheet$avenir,
20021				_1: {
20022					ctor: '::',
20023					_0: _user$project$StyleSheet$semibold,
20024					_1: {ctor: '[]'}
20025				}
20026			},
20027			{
20028				ctor: '::',
20029				_0: _elm_lang$html$Html$text('flora project'),
20030				_1: {ctor: '[]'}
20031			}),
20032		_1: {
20033			ctor: '::',
20034			_0: A2(
20035				_elm_lang$html$Html$h3,
20036				{
20037					ctor: '::',
20038					_0: _user$project$StyleSheet$avenir,
20039					_1: {ctor: '[]'}
20040				},
20041				{
20042					ctor: '::',
20043					_0: _elm_lang$html$Html$text('audio effects'),
20044					_1: {ctor: '[]'}
20045				}),
20046			_1: {
20047				ctor: '::',
20048				_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
20049				_1: {
20050					ctor: '::',
20051					_0: A2(
20052						_elm_lang$html$Html$h6,
20053						{
20054							ctor: '::',
20055							_0: _user$project$StyleSheet$avenir,
20056							_1: {
20057								ctor: '::',
20058								_0: _user$project$StyleSheet$regular,
20059								_1: {
20060									ctor: '::',
20061									_0: _elm_lang$html$Html_Attributes$style(
20062										{
20063											ctor: '::',
20064											_0: {ctor: '_Tuple2', _0: 'text-align', _1: 'center'},
20065											_1: {ctor: '[]'}
20066										}),
20067									_1: {ctor: '[]'}
20068								}
20069							}
20070						},
20071						{
20072							ctor: '::',
20073							_0: _elm_lang$html$Html$text(_user$project$FloraWeb$floraProjectDescription),
20074							_1: {ctor: '[]'}
20075						}),
20076					_1: {
20077						ctor: '::',
20078						_0: _user$project$StyleSheet$separatorWithColor(_user$project$StyleSheet$blueGray),
20079						_1: {ctor: '[]'}
20080					}
20081				}
20082			}
20083		}
20084	};
20085};
20086var _user$project$FloraWeb$floraProjectDescriptionView = function (model) {
20087	var descriptionStyle = {
20088		ctor: '::',
20089		_0: _elm_lang$html$Html_Attributes$style(
20090			{
20091				ctor: '::',
20092				_0: {ctor: '_Tuple2', _0: 'text-align', _1: 'center'},
20093				_1: {
20094					ctor: '::',
20095					_0: {ctor: '_Tuple2', _0: 'color', _1: _user$project$StyleSheet$blueGray},
20096					_1: {ctor: '[]'}
20097				}
20098			}),
20099		_1: _user$project$StyleSheet$embeddedContentStyle
20100	};
20101	return A2(
20102		_elm_lang$html$Html$div,
20103		descriptionStyle,
20104		_user$project$FloraWeb$floraProjectTitle(model));
20105};
20106var _user$project$FloraWeb$footerView = function (model) {
20107	var currentYear = A2(
20108		_elm_lang$core$Maybe$map,
20109		function (_p2) {
20110			return _elm_lang$core$Basics$toString(
20111				_elm_lang$core$Date$year(_p2));
20112		},
20113		model.date);
20114	var footerText = A2(
20115		_elm_lang$core$Basics_ops['++'],
20116		'Copyright Flora Creative ',
20117		A2(
20118			_elm_lang$core$Basics_ops['++'],
20119			A2(_elm_lang$core$Maybe$withDefault, '2019', currentYear),
20120			'.'));
20121	return A2(
20122		_elm_lang$html$Html$div,
20123		{ctor: '[]'},
20124		{
20125			ctor: '::',
20126			_0: A2(
20127				_elm_lang$html$Html$br,
20128				{ctor: '[]'},
20129				{ctor: '[]'}),
20130			_1: {
20131				ctor: '::',
20132				_0: A2(
20133					_elm_lang$html$Html$h6,
20134					{
20135						ctor: '::',
20136						_0: _user$project$StyleSheet$avenir,
20137						_1: {
20138							ctor: '::',
20139							_0: _user$project$StyleSheet$regular,
20140							_1: {
20141								ctor: '::',
20142								_0: _elm_lang$html$Html_Attributes$style(
20143									{
20144										ctor: '::',
20145										_0: {ctor: '_Tuple2', _0: 'color', _1: _user$project$StyleSheet$mutedMustard},
20146										_1: {
20147											ctor: '::',
20148											_0: {ctor: '_Tuple2', _0: 'text-align', _1: 'center'},
20149											_1: {
20150												ctor: '::',
20151												_0: {ctor: '_Tuple2', _0: 'margin-bottom', _1: '2em'},
20152												_1: {ctor: '[]'}
20153											}
20154										}
20155									}),
20156								_1: {ctor: '[]'}
20157							}
20158						}
20159					},
20160					{
20161						ctor: '::',
20162						_0: _elm_lang$html$Html$text(footerText),
20163						_1: {ctor: '[]'}
20164					}),
20165				_1: {ctor: '[]'}
20166			}
20167		});
20168};
20169var _user$project$FloraWeb$errorView = A2(
20170	_elm_lang$html$Html$div,
20171	_user$project$StyleSheet$embeddedContentStyle,
20172	{
20173		ctor: '::',
20174		_0: A2(
20175			_elm_lang$html$Html$h3,
20176			{
20177				ctor: '::',
20178				_0: _user$project$StyleSheet$avenir,
20179				_1: {
20180					ctor: '::',
20181					_0: _user$project$StyleSheet$mainBodyTextStyle,
20182					_1: {ctor: '[]'}
20183				}
20184			},
20185			{
20186				ctor: '::',
20187				_0: _elm_lang$html$Html$text('Something has gone wrong. We\'ll be back up soon.'),
20188				_1: {ctor: '[]'}
20189			}),
20190		_1: {ctor: '[]'}
20191	});
20192var _user$project$FloraWeb$navigationItem = F2(
20193	function (itemLink, itemTitle) {
20194		return A2(
20195			_rundis$elm_bootstrap$Bootstrap_Navbar$itemLink,
20196			{
20197				ctor: '::',
20198				_0: _elm_lang$html$Html_Attributes$href(itemLink),
20199				_1: {ctor: '[]'}
20200			},
20201			{
20202				ctor: '::',
20203				_0: A2(
20204					_elm_lang$html$Html$h5,
20205					{
20206						ctor: '::',
20207						_0: _user$project$StyleSheet$avenir,
20208						_1: {
20209							ctor: '::',
20210							_0: _user$project$StyleSheet$regular,
20211							_1: {ctor: '[]'}
20212						}
20213					},
20214					{
20215						ctor: '::',
20216						_0: _elm_lang$html$Html$text(itemTitle),
20217						_1: {ctor: '[]'}
20218					}),
20219				_1: {ctor: '[]'}
20220			});
20221	});
20222var _user$project$FloraWeb$Model = F6(
20223	function (a, b, c, d, e, f) {
20224		return {history: a, apps: b, hasFinishedLoading: c, navState: d, contactModel: e, date: f};
20225	});
20226var _user$project$FloraWeb$SetDate = function (a) {
20227	return {ctor: 'SetDate', _0: a};
20228};
20229var _user$project$FloraWeb$now = A2(
20230	_elm_lang$core$Task$perform,
20231	function (_p3) {
20232		return _user$project$FloraWeb$SetDate(
20233			_elm_lang$core$Maybe$Just(_p3));
20234	},
20235	_elm_lang$core$Date$now);
20236var _user$project$FloraWeb$ContactFormUpdated = function (a) {
20237	return {ctor: 'ContactFormUpdated', _0: a};
20238};
20239var _user$project$FloraWeb$update = F2(
20240	function (msg, model) {
20241		var _p4 = msg;
20242		switch (_p4.ctor) {
20243			case 'UrlChanged':
20244				return {
20245					ctor: '_Tuple2',
20246					_0: _elm_lang$core$Native_Utils.update(
20247						model,
20248						{
20249							history: {ctor: '::', _0: _p4._0, _1: model.history}
20250						}),
20251					_1: _elm_lang$core$Platform_Cmd$none
20252				};
20253			case 'NavMsg':
20254				return {
20255					ctor: '_Tuple2',
20256					_0: _elm_lang$core$Native_Utils.update(
20257						model,
20258						{navState: _p4._0}),
20259					_1: _elm_lang$core$Platform_Cmd$none
20260				};
20261			case 'ReceivedAllApps':
20262				var _p5 = _p4._0;
20263				if (_p5.ctor === 'Err') {
20264					return A2(
20265						_elm_lang$core$Debug$log,
20266						_elm_lang$core$Basics$toString(_p5._0),
20267						{
20268							ctor: '_Tuple2',
20269							_0: _elm_lang$core$Native_Utils.update(
20270								model,
20271								{hasFinishedLoading: true}),
20272							_1: _elm_lang$core$Platform_Cmd$none
20273						});
20274				} else {
20275					return {
20276						ctor: '_Tuple2',
20277						_0: _elm_lang$core$Native_Utils.update(
20278							model,
20279							{
20280								apps: _elm_lang$core$Array$fromList(
20281									A2(_elm_lang$core$List$indexedMap, _user$project$App$init, _p5._0)),
20282								hasFinishedLoading: true
20283							}),
20284						_1: _elm_lang$core$Platform_Cmd$none
20285					};
20286				}
20287			case 'AppMsg':
20288				var _p6 = _p4._0;
20289				return {
20290					ctor: '_Tuple2',
20291					_0: _elm_lang$core$Native_Utils.update(
20292						model,
20293						{
20294							apps: A3(
20295								_elm_lang$core$Array$set,
20296								_p6.index,
20297								A2(_user$project$App$update, _p4._1, _p6),
20298								model.apps)
20299						}),
20300					_1: _elm_lang$core$Platform_Cmd$none
20301				};
20302			case 'ContactFormUpdated':
20303				var _p7 = A2(_user$project$Contact$update, _p4._0, model.contactModel);
20304				var updated = _p7._0;
20305				var cmd = _p7._1;
20306				return {
20307					ctor: '_Tuple2',
20308					_0: _elm_lang$core$Native_Utils.update(
20309						model,
20310						{contactModel: updated}),
20311					_1: A2(_elm_lang$core$Platform_Cmd$map, _user$project$FloraWeb$ContactFormUpdated, cmd)
20312				};
20313			default:
20314				return {
20315					ctor: '_Tuple2',
20316					_0: _elm_lang$core$Native_Utils.update(
20317						model,
20318						{date: _p4._0}),
20319					_1: _elm_lang$core$Platform_Cmd$none
20320				};
20321		}
20322	});
20323var _user$project$FloraWeb$AppMsg = F2(
20324	function (a, b) {
20325		return {ctor: 'AppMsg', _0: a, _1: b};
20326	});
20327var _user$project$FloraWeb$floraAppView = function (model) {
20328	var appMsg = function (appModel) {
20329		return A2(
20330			_elm_lang$html$Html$map,
20331			_user$project$FloraWeb$AppMsg(appModel),
20332			_user$project$App$view(appModel));
20333	};
20334	var appContent = _elm_lang$core$Array$toList(
20335		A2(_elm_lang$core$Array$map, appMsg, model.apps));
20336	var projectOverview = {
20337		ctor: '::',
20338		_0: _user$project$FloraWeb$floraProjectDescriptionView(model),
20339		_1: {ctor: '[]'}
20340	};
20341	return A2(
20342		_elm_lang$html$Html$div,
20343		{ctor: '[]'},
20344		A2(_elm_lang$core$Basics_ops['++'], projectOverview, appContent));
20345};
20346var _user$project$FloraWeb$floraProjectContentView = function (model) {
20347	var _p8 = model.hasFinishedLoading;
20348	if (_p8 === true) {
20349		var _p9 = _elm_lang$core$Array$isEmpty(model.apps);
20350		if (_p9 === true) {
20351			return _user$project$FloraWeb$errorView;
20352		} else {
20353			return A2(
20354				_elm_lang$html$Html$div,
20355				{ctor: '[]'},
20356				{
20357					ctor: '::',
20358					_0: _user$project$FloraWeb$floraAppView(model),
20359					_1: {ctor: '[]'}
20360				});
20361		}
20362	} else {
20363		return _user$project$StyleSheet$loadingView;
20364	}
20365};
20366var _user$project$FloraWeb$NavMsg = function (a) {
20367	return {ctor: 'NavMsg', _0: a};
20368};
20369var _user$project$FloraWeb$subscriptions = function (model) {
20370	var appSubscription = function (app) {
20371		return A2(
20372			_elm_lang$core$Platform_Sub$map,
20373			_user$project$FloraWeb$AppMsg(app),
20374			_user$project$App$subscriptions(app));
20375	};
20376	var allAppSubscriptions = _elm_lang$core$Array$toList(
20377		A2(_elm_lang$core$Array$map, appSubscription, model.apps));
20378	return _elm_lang$core$Platform_Sub$batch(
20379		A2(
20380			_elm_lang$core$Basics_ops['++'],
20381			{
20382				ctor: '::',
20383				_0: A2(_rundis$elm_bootstrap$Bootstrap_Navbar$subscriptions, model.navState, _user$project$FloraWeb$NavMsg),
20384				_1: {ctor: '[]'}
20385			},
20386			allAppSubscriptions));
20387};
20388var _user$project$FloraWeb$menu = function (model) {
20389	var logoStyle = {
20390		ctor: '::',
20391		_0: A2(
20392			_elm_lang$html$Html$h1,
20393			{
20394				ctor: '::',
20395				_0: _user$project$StyleSheet$avenir,
20396				_1: {
20397					ctor: '::',
20398					_0: _user$project$StyleSheet$semibold,
20399					_1: {
20400						ctor: '::',
20401						_0: _elm_lang$html$Html_Attributes$style(
20402							{
20403								ctor: '::',
20404								_0: {ctor: '_Tuple2', _0: 'color', _1: _user$project$StyleSheet$blueGray},
20405								_1: {
20406									ctor: '::',
20407									_0: {ctor: '_Tuple2', _0: 'text-color', _1: _user$project$StyleSheet$blueGray},
20408									_1: {ctor: '[]'}
20409								}
20410							}),
20411						_1: {ctor: '[]'}
20412					}
20413				}
20414			},
20415			{
20416				ctor: '::',
20417				_0: _elm_lang$html$Html$text('flora creative'),
20418				_1: {ctor: '[]'}
20419			}),
20420		_1: {ctor: '[]'}
20421	};
20422	return A2(
20423		_rundis$elm_bootstrap$Bootstrap_Navbar$view,
20424		model.navState,
20425		A2(
20426			_rundis$elm_bootstrap$Bootstrap_Navbar$items,
20427			{
20428				ctor: '::',
20429				_0: A2(_user$project$FloraWeb$navigationItem, '#flora', 'flora project'),
20430				_1: {
20431					ctor: '::',
20432					_0: A2(_user$project$FloraWeb$navigationItem, '#about', 'about'),
20433					_1: {
20434						ctor: '::',
20435						_0: A2(_user$project$FloraWeb$navigationItem, '#contact', 'contact'),
20436						_1: {
20437							ctor: '::',
20438							_0: A2(_user$project$FloraWeb$navigationItem, '#privacy', 'privacy'),
20439							_1: {ctor: '[]'}
20440						}
20441					}
20442				}
20443			},
20444			A3(
20445				_rundis$elm_bootstrap$Bootstrap_Navbar$brand,
20446				{
20447					ctor: '::',
20448					_0: _elm_lang$html$Html_Attributes$href(''),
20449					_1: {ctor: '[]'}
20450				},
20451				logoStyle,
20452				_rundis$elm_bootstrap$Bootstrap_Navbar$collapseMedium(
20453					A2(
20454						_rundis$elm_bootstrap$Bootstrap_Navbar$lightCustomClass,
20455						_user$project$StyleSheet$mutedMustard,
20456						_rundis$elm_bootstrap$Bootstrap_Navbar$withAnimation(
20457							A2(
20458								_rundis$elm_bootstrap$Bootstrap_Navbar$attrs,
20459								_user$project$StyleSheet$navBarStyle,
20460								_rundis$elm_bootstrap$Bootstrap_Navbar$config(_user$project$FloraWeb$NavMsg))))))));
20461};
20462var _user$project$FloraWeb$ReceivedAllApps = function (a) {
20463	return {ctor: 'ReceivedAllApps', _0: a};
20464};
20465var _user$project$FloraWeb$fetchAllApps = A2(
20466	_elm_lang$http$Http$send,
20467	_user$project$FloraWeb$ReceivedAllApps,
20468	_user$project$API$get('https://flora-api.herokuapp.com/'));
20469var _user$project$FloraWeb$init = function (location) {
20470	var _p10 = _rundis$elm_bootstrap$Bootstrap_Navbar$initialState(_user$project$FloraWeb$NavMsg);
20471	var navState = _p10._0;
20472	var navCmd = _p10._1;
20473	return {
20474		ctor: '_Tuple2',
20475		_0: {
20476			history: {
20477				ctor: '::',
20478				_0: location,
20479				_1: {ctor: '[]'}
20480			},
20481			apps: _elm_lang$core$Array$empty,
20482			hasFinishedLoading: false,
20483			navState: navState,
20484			contactModel: _user$project$Contact$init,
20485			date: _elm_lang$core$Maybe$Nothing
20486		},
20487		_1: _elm_lang$core$Platform_Cmd$batch(
20488			{
20489				ctor: '::',
20490				_0: navCmd,
20491				_1: {
20492					ctor: '::',
20493					_0: _user$project$FloraWeb$fetchAllApps,
20494					_1: {
20495						ctor: '::',
20496						_0: _user$project$FloraWeb$now,
20497						_1: {ctor: '[]'}
20498					}
20499				}
20500			})
20501	};
20502};
20503var _user$project$FloraWeb$UrlChanged = function (a) {
20504	return {ctor: 'UrlChanged', _0: a};
20505};
20506var _user$project$FloraWeb$Unknown = {ctor: 'Unknown'};
20507var _user$project$FloraWeb$Privacy = {ctor: 'Privacy'};
20508var _user$project$FloraWeb$Contact = {ctor: 'Contact'};
20509var _user$project$FloraWeb$About = {ctor: 'About'};
20510var _user$project$FloraWeb$IndividualApp = function (a) {
20511	return {ctor: 'IndividualApp', _0: a};
20512};
20513var _user$project$FloraWeb$FloraApp = {ctor: 'FloraApp'};
20514var _user$project$FloraWeb$currentPage = function (model) {
20515	var currentLocationHash = A2(
20516		_elm_lang$core$Maybe$withDefault,
20517		'',
20518		A2(
20519			_elm_lang$core$Maybe$map,
20520			function (l) {
20521				return l.hash;
20522			},
20523			_elm_lang$core$List$head(model.history)));
20524	var appFromHash = _elm_lang$core$List$head(
20525		_elm_lang$core$Array$toList(
20526			A2(
20527				_elm_lang$core$Array$filter,
20528				function (appModel) {
20529					return _elm_lang$core$Native_Utils.eq(appModel.app.shortName, currentLocationHash);
20530				},
20531				model.apps)));
20532	var _p11 = currentLocationHash;
20533	switch (_p11) {
20534		case '':
20535			return _user$project$FloraWeb$FloraApp;
20536		case '#flora':
20537			return _user$project$FloraWeb$FloraApp;
20538		case '#about':
20539			return _user$project$FloraWeb$About;
20540		case '#contact':
20541			return _user$project$FloraWeb$Contact;
20542		case '#privacy':
20543			return _user$project$FloraWeb$Privacy;
20544		default:
20545			return A2(
20546				_elm_lang$core$Maybe$withDefault,
20547				_user$project$FloraWeb$Unknown,
20548				A2(_elm_lang$core$Maybe$map, _user$project$FloraWeb$IndividualApp, appFromHash));
20549	}
20550};
20551var _user$project$FloraWeb$mainContentView = function (model) {
20552	var _p12 = _user$project$FloraWeb$currentPage(model);
20553	switch (_p12.ctor) {
20554		case 'Unknown':
20555			return _user$project$FloraWeb$errorView;
20556		case 'FloraApp':
20557			return _user$project$FloraWeb$floraProjectContentView(model);
20558		case 'IndividualApp':
20559			return _user$project$FloraWeb$floraProjectContentView(model);
20560		case 'About':
20561			return _user$project$About$view;
20562		case 'Privacy':
20563			return _user$project$Privacy$view;
20564		default:
20565			return A2(
20566				_elm_lang$html$Html$map,
20567				_user$project$FloraWeb$ContactFormUpdated,
20568				_user$project$Contact$view(model.contactModel));
20569	}
20570};
20571var _user$project$FloraWeb$view = function (model) {
20572	return A2(
20573		_elm_lang$html$Html$div,
20574		{ctor: '[]'},
20575		{
20576			ctor: '::',
20577			_0: _rundis$elm_bootstrap$Bootstrap_CDN$stylesheet,
20578			_1: {
20579				ctor: '::',
20580				_0: _user$project$FloraWeb$menu(model),
20581				_1: {
20582					ctor: '::',
20583					_0: _user$project$FloraWeb$mainContentView(model),
20584					_1: {
20585						ctor: '::',
20586						_0: _user$project$FloraWeb$footerView(model),
20587						_1: {ctor: '[]'}
20588					}
20589				}
20590			}
20591		});
20592};
20593
20594var _user$project$Main$main = A2(
20595	_elm_lang$navigation$Navigation$program,
20596	_user$project$FloraWeb$UrlChanged,
20597	{init: _user$project$FloraWeb$init, view: _user$project$FloraWeb$view, update: _user$project$FloraWeb$update, subscriptions: _user$project$FloraWeb$subscriptions})();
20598
20599var Elm = {};
20600Elm['Main'] = Elm['Main'] || {};
20601if (typeof _user$project$Main$main !== 'undefined') {
20602    _user$project$Main$main(Elm['Main'], 'Main', undefined);
20603}
20604
20605if (typeof define === "function" && define['amd'])
20606{
20607  define([], function() { return Elm; });
20608  return;
20609}
20610
20611if (typeof module === "object")
20612{
20613  module['exports'] = Elm;
20614  return;
20615}
20616
20617var globalElm = this['Elm'];
20618if (typeof globalElm === "undefined")
20619{
20620  this['Elm'] = Elm;
20621  return;
20622}
20623
20624for (var publicModule in Elm)
20625{
20626  if (publicModule in globalElm)
20627  {
20628    throw new Error('There are two Elm modules called `' + publicModule + '` on this page! Rename one of them.');
20629  }
20630  globalElm[publicModule] = Elm[publicModule];
20631}
20632
20633}).call(this);
20634

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.