// From endpointOverlap.cpp
#include "libavoid/libavoid.h"
#include <sstream>

extern "C" int main(void)
{
	// The contents of this function can be replaced by the automatically generated test code from the debug svg file
	Avoid::ConnEnd end1_0;
	Avoid::ConnEnd end2_0;
	Avoid::Polygon poly0;
	Avoid::Router * router0 = new Avoid::Router(Avoid::OrthogonalRouting);
	Avoid::HyperedgeNewAndDeletedObjectLists newanddeletedobjects_0;
	Avoid::ConnRefList::const_iterator connit_0;
	Avoid::JunctionRefList::const_iterator junctionit_0;
	router0->setTransactionUse(true);
	router0->setRoutingPenalty(Avoid::segmentPenalty);
	router0->setRoutingParameter(Avoid::portDirectionPenalty, 100);
	router0->setRoutingParameter(Avoid::idealNudgingDistance, 25);
	router0->setRoutingOption(Avoid::improveHyperedgeRoutesMovingAddingAndDeletingJunctions, true);
	router0->setRoutingPenalty(Avoid::fixedSharedPathPenalty, 9000);
	router0->setRoutingOption(Avoid::penaliseOrthogonalSharedPathsAtConnEnds, true);
	router0->setRoutingParameter(Avoid::crossingPenalty);
	router0->setRoutingOption(Avoid::performUnifyingNudgingPreprocessingStep, true);
	poly0 = Avoid::Polygon(4);
	poly0.setPoint(0, Avoid::Point(50410, 50115));
	poly0.setPoint(1, Avoid::Point(50410, 51860));
	poly0.setPoint(2, Avoid::Point(50050, 51860));
	poly0.setPoint(3, Avoid::Point(50050, 50115));
	Avoid::ShapeRef * shape0_288069558 = new Avoid::ShapeRef(router0, poly0, 288069558);
	Avoid::ShapeConnectionPin * pin0_288069558_0 = new Avoid::ShapeConnectionPin(shape0_288069558, 1, 0, 85, false, 10, 4);
	pin0_288069558_0->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_1 = new Avoid::ShapeConnectionPin(shape0_288069558, 2, 0, 160, false, 10, 4);
	pin0_288069558_1->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_2 = new Avoid::ShapeConnectionPin(shape0_288069558, 3, 0, 235, false, 10, 4);
	pin0_288069558_2->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_3 = new Avoid::ShapeConnectionPin(shape0_288069558, 4, 0, 310, false, 10, 4);
	pin0_288069558_3->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_4 = new Avoid::ShapeConnectionPin(shape0_288069558, 5, 0, 385, false, 10, 4);
	pin0_288069558_4->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_5 = new Avoid::ShapeConnectionPin(shape0_288069558, 6, 0, 460, false, 10, 4);
	pin0_288069558_5->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_6 = new Avoid::ShapeConnectionPin(shape0_288069558, 7, 0, 535, false, 10, 4);
	pin0_288069558_6->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_7 = new Avoid::ShapeConnectionPin(shape0_288069558, 8, 0, 610, false, 10, 4);
	pin0_288069558_7->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_8 = new Avoid::ShapeConnectionPin(shape0_288069558, 9, 0, 685, false, 10, 4);
	pin0_288069558_8->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_9 = new Avoid::ShapeConnectionPin(shape0_288069558, 10, 0, 760, false, 10, 4);
	pin0_288069558_9->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_10 = new Avoid::ShapeConnectionPin(shape0_288069558, 11, 0, 835, false, 10, 4);
	pin0_288069558_10->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_11 = new Avoid::ShapeConnectionPin(shape0_288069558, 12, 0, 910, false, 10, 4);
	pin0_288069558_11->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_12 = new Avoid::ShapeConnectionPin(shape0_288069558, 13, 0, 985, false, 10, 4);
	pin0_288069558_12->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_13 = new Avoid::ShapeConnectionPin(shape0_288069558, 14, 0, 1060, false, 10, 4);
	pin0_288069558_13->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_14 = new Avoid::ShapeConnectionPin(shape0_288069558, 15, 0, 1135, false, 10, 4);
	pin0_288069558_14->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_15 = new Avoid::ShapeConnectionPin(shape0_288069558, 16, 0, 1210, false, 10, 4);
	pin0_288069558_15->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_16 = new Avoid::ShapeConnectionPin(shape0_288069558, 17, 0, 1285, false, 10, 4);
	pin0_288069558_16->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_17 = new Avoid::ShapeConnectionPin(shape0_288069558, 18, 0, 1360, false, 10, 4);
	pin0_288069558_17->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_18 = new Avoid::ShapeConnectionPin(shape0_288069558, 19, 0, 1435, false, 10, 4);
	pin0_288069558_18->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_19 = new Avoid::ShapeConnectionPin(shape0_288069558, 20, 0, 1510, false, 10, 4);
	pin0_288069558_19->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_20 = new Avoid::ShapeConnectionPin(shape0_288069558, 21, 0, 1585, false, 10, 4);
	pin0_288069558_20->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_21 = new Avoid::ShapeConnectionPin(shape0_288069558, 22, 0, 1660, false, 10, 4);
	pin0_288069558_21->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_22 = new Avoid::ShapeConnectionPin(shape0_288069558, 23, 350, 85, false, 10, 8);
	pin0_288069558_22->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_23 = new Avoid::ShapeConnectionPin(shape0_288069558, 24, 350, 160, false, 10, 8);
	pin0_288069558_23->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_24 = new Avoid::ShapeConnectionPin(shape0_288069558, 25, 350, 235, false, 10, 8);
	pin0_288069558_24->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_25 = new Avoid::ShapeConnectionPin(shape0_288069558, 26, 350, 310, false, 10, 8);
	pin0_288069558_25->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_26 = new Avoid::ShapeConnectionPin(shape0_288069558, 27, 350, 385, false, 10, 8);
	pin0_288069558_26->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_27 = new Avoid::ShapeConnectionPin(shape0_288069558, 28, 350, 460, false, 10, 8);
	pin0_288069558_27->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_28 = new Avoid::ShapeConnectionPin(shape0_288069558, 29, 350, 535, false, 10, 8);
	pin0_288069558_28->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_29 = new Avoid::ShapeConnectionPin(shape0_288069558, 30, 350, 610, false, 10, 8);
	pin0_288069558_29->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_30 = new Avoid::ShapeConnectionPin(shape0_288069558, 31, 350, 685, false, 10, 8);
	pin0_288069558_30->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_31 = new Avoid::ShapeConnectionPin(shape0_288069558, 32, 350, 760, false, 10, 8);
	pin0_288069558_31->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_32 = new Avoid::ShapeConnectionPin(shape0_288069558, 33, 350, 835, false, 10, 8);
	pin0_288069558_32->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_33 = new Avoid::ShapeConnectionPin(shape0_288069558, 34, 350, 910, false, 10, 8);
	pin0_288069558_33->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_34 = new Avoid::ShapeConnectionPin(shape0_288069558, 35, 350, 985, false, 10, 8);
	pin0_288069558_34->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_35 = new Avoid::ShapeConnectionPin(shape0_288069558, 36, 350, 1060, false, 10, 8);
	pin0_288069558_35->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_36 = new Avoid::ShapeConnectionPin(shape0_288069558, 37, 350, 1135, false, 10, 8);
	pin0_288069558_36->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_37 = new Avoid::ShapeConnectionPin(shape0_288069558, 38, 350, 1210, false, 10, 8);
	pin0_288069558_37->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_38 = new Avoid::ShapeConnectionPin(shape0_288069558, 39, 350, 1285, false, 10, 8);
	pin0_288069558_38->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_39 = new Avoid::ShapeConnectionPin(shape0_288069558, 40, 350, 1360, false, 10, 8);
	pin0_288069558_39->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_40 = new Avoid::ShapeConnectionPin(shape0_288069558, 41, 350, 1435, false, 10, 8);
	pin0_288069558_40->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_41 = new Avoid::ShapeConnectionPin(shape0_288069558, 42, 350, 1510, false, 10, 8);
	pin0_288069558_41->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_288069558_42 = new Avoid::ShapeConnectionPin(shape0_288069558, 43, 350, 1585, false, 10, 8);
	pin0_288069558_42->setExclusive(true);
	poly0 = Avoid::Polygon(4);
	poly0.setPoint(0, Avoid::Point(49500, 50920));
	poly0.setPoint(1, Avoid::Point(49500, 50980));
	poly0.setPoint(2, Avoid::Point(49340, 50980));
	poly0.setPoint(3, Avoid::Point(49340, 50920));
	Avoid::ShapeRef * shape0_59726400 = new Avoid::ShapeRef(router0, poly0, 59726400);
	Avoid::ShapeConnectionPin * pin0_59726400_0 = new Avoid::ShapeConnectionPin(shape0_59726400, 1, 10, 30, false, 10, 4);
	pin0_59726400_0->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_59726400_1 = new Avoid::ShapeConnectionPin(shape0_59726400, 2, -1, 30, false, 10, 8);
	pin0_59726400_1->setExclusive(true);
	poly0 = Avoid::Polygon(4);
	poly0.setPoint(0, Avoid::Point(49500, 50845));
	poly0.setPoint(1, Avoid::Point(49500, 50905));
	poly0.setPoint(2, Avoid::Point(49340, 50905));
	poly0.setPoint(3, Avoid::Point(49340, 50845));
	Avoid::ShapeRef * shape0_574489840 = new Avoid::ShapeRef(router0, poly0, 574489840);
	Avoid::ShapeConnectionPin * pin0_574489840_0 = new Avoid::ShapeConnectionPin(shape0_574489840, 1, 10, 30, false, 10, 4);
	pin0_574489840_0->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_574489840_1 = new Avoid::ShapeConnectionPin(shape0_574489840, 2, -1, 30, false, 10, 8);
	pin0_574489840_1->setExclusive(true);
	poly0 = Avoid::Polygon(4);
	poly0.setPoint(0, Avoid::Point(49500, 50695));
	poly0.setPoint(1, Avoid::Point(49500, 50755));
	poly0.setPoint(2, Avoid::Point(49340, 50755));
	poly0.setPoint(3, Avoid::Point(49340, 50695));
	Avoid::ShapeRef * shape0_482418284 = new Avoid::ShapeRef(router0, poly0, 482418284);
	Avoid::ShapeConnectionPin * pin0_482418284_0 = new Avoid::ShapeConnectionPin(shape0_482418284, 1, 10, 30, false, 10, 4);
	pin0_482418284_0->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_482418284_1 = new Avoid::ShapeConnectionPin(shape0_482418284, 2, -1, 30, false, 10, 8);
	pin0_482418284_1->setExclusive(true);
	poly0 = Avoid::Polygon(4);
	poly0.setPoint(0, Avoid::Point(49500, 50770));
	poly0.setPoint(1, Avoid::Point(49500, 50830));
	poly0.setPoint(2, Avoid::Point(49340, 50830));
	poly0.setPoint(3, Avoid::Point(49340, 50770));
	Avoid::ShapeRef * shape0_100128936 = new Avoid::ShapeRef(router0, poly0, 100128936);
	Avoid::ShapeConnectionPin * pin0_100128936_0 = new Avoid::ShapeConnectionPin(shape0_100128936, 1, 10, 30, false, 10, 4);
	pin0_100128936_0->setExclusive(true);
	Avoid::ShapeConnectionPin * pin0_100128936_1 = new Avoid::ShapeConnectionPin(shape0_100128936, 2, -1, 30, false, 10, 8);
	pin0_100128936_1->setExclusive(true);
	end1_0 = Avoid::ConnEnd(shape0_100128936, 2);
	end2_0 = Avoid::ConnEnd(shape0_288069558, 12);
	new Avoid::ConnRef(router0, end1_0, end2_0, 105958336);
	end1_0 = Avoid::ConnEnd(shape0_574489840, 2);
	end2_0 = Avoid::ConnEnd(shape0_288069558, 13);
	new Avoid::ConnRef(router0, end1_0, end2_0, 377294085);
	end1_0 = Avoid::ConnEnd(shape0_59726400, 2);
	end2_0 = Avoid::ConnEnd(shape0_288069558, 14);
	new Avoid::ConnRef(router0, end1_0, end2_0, 870686312);
	router0->processTransaction();

	poly0 = Avoid::Polygon(4);
	poly0.setPoint(0, Avoid::Point(49518, 50707));
	poly0.setPoint(1, Avoid::Point(49518, 50743));
	poly0.setPoint(2, Avoid::Point(49482, 50743));
	poly0.setPoint(3, Avoid::Point(49482, 50707));
	Avoid::ShapeRef * shape0_91346832 = new Avoid::ShapeRef(router0, poly0, 91346832);
	Avoid::ShapeConnectionPin * pin0_91346832_0 = new Avoid::ShapeConnectionPin(shape0_91346832, 2147483646, 18, 18, false, 0, 15);
	pin0_91346832_0->setExclusive(false);
	end1_0 = Avoid::ConnEnd(shape0_91346832, Avoid::CONNECTIONPIN_CENTRE);
	end2_0 = Avoid::ConnEnd(shape0_288069558, 11);
	new Avoid::ConnRef(router0, end1_0, end2_0, 214417907);
	router0->processTransaction();

	router0->outputDiagram("output/inlineOverlap11");

	bool optimisedForConnectorType = false;
	int crossings = router0->existsCrossings(optimisedForConnectorType);
	delete router0;
	return (crossings > 0) ? 1 : 0;
}

