#include <iostream>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <bitset>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>

#define X first
#define Y second
using namespace std;

struct point{
	point(){}
	double x;
	double y;
};

bool check(point *pos){
	double dot = ((pos[0].x-pos[1].x)*(pos[2].x-pos[3].x))+((pos[0].y-pos[1].y)*(pos[2].y-pos[3].y));
	if(dot > -0.0000000001 && dot < 0.0000000001){
		return true;
	}
	return false;
}

int main(){
	point pos[4];
	while(cin >> pos[0].x >> pos[0].y >> pos[1].x >> pos[1].y >> pos[2].x >> pos[2].y >> pos[3].x >> pos[3].y){
		if(cin.eof()) break;
		if(check(pos)) cout << "YES" << endl;
		else cout << "NO" << endl;
	}
	return 0;
}